字符串的比较

1、单个字符的比较就是ascii码的比较(对应的十进制)

  'A'->65     'a'->91

    --->'a' > 'A'

2、多个字符的字符串比较就是一一对应的单个字符的比较,一旦比较出结果就终止比较

  'aBc' < 'aA'

函数的参数

形参与实参

  --实参:有实际意义的参数

      --在函数调用中,()里面传入的参数

  --形参:本身没有意义,有实参对它进行赋值之后就具有意义

      --在函数定义过程中,函数名后面()中用来定义函数的参数

形参范畴

def add(n1,n2):    #这里的n1,n2本身没有意义,但如果被什么意义的参数赋值,他就具有了什么意义

  return n1,n2

实参范畴

print(add(1,2))    #这里的1和2就是实参,实际传入函数的参数

形参是对实参的值拷贝(实参赋值给形参时,两个id地址一样)

  当实参是不可变类型时,形参在函数内部发生发生改变对外部的实参没有影响

    def fn(num):

      num = 20

      return num

    num = 10

    fn(num)    #这里的num是实参

    print(num)  #虽然调用函数内部的num重新赋值,但是10是不可变类型,所以这里的num还是10

  当实参是可变类型时,形参在函数内部发生改变,外界的实参随之变化

    def fn(num):

      num.append(1)

      return num

    num = [10]

    fn(num)    #这里的num是实参

    print(num)  #调用函数内部的num内部发生改变,这里[10]是可变类型,所以这里的num是[10,1]

实参的分类

def fn(n1,n2):

  return n1,n2

1、位置实参

  --一定按照位置进行传参,且形参和实参的位置必须要一一对应,不然报错

    a = 10

    b = 20

    fn(a,b)

2、关键字实参

  --用关键字指名道姓的传参,位置可以颠倒

    fn(n1=10,n2=20)  =>n1=10,n2=20

    fn(n2=20,n1=10)  =>n1=10,n2=20

#注:(传参规则)传参时,位置实参必须放在关键字实参之前

形参的分类

1、位置形参(无值位置形参)

  可以被位置实参和关键字实参传值,必须传值

2、默认形参

  可以被位置实参和关键字实参传值,可以不传值,采用默认值,只在定义的时候赋值一次,我们一般赋值不可变类型

3、可变长位置形参

  可以接收位置形参和默认形参没有接收完的值,只能接收位置实参传值,接收数量0~N个,用元组接收,0个就是空元组

4、无值关键字形参

  只能被关键字实参传值,必须传值

5、有值关键字形参

  只能被关键字实参传值,可以不传值,采用默认值

6、可变长关键字形参

  可以接收4和5没有接收完的值,只能接收关键字实参传值,接收数量0~N个,用字典接收,0个就是空字典

函数定义时的声明顺序:位置形参-->默认形参-->可变长位置形参-->无值关键字形参-->有值关键字形参-->可变长关键字形参

#注:1、位置形参传值时一定要按顺序传值,关键字形参传值时可以不按顺序

   2、可变长位置形参只能接收位置实参,要想被附上值,前面的默认形参就没有意义。

    3、args和kwargs时可变长形参的变量名,所以是可以自定义的,但是我们约定俗成用args和kwargs

常出现的组合

1)def f1(*args,**kwargs): pass    #第一类

----------------------------------------------------

2)def f2(a,b=10,**kwargs): pass

3)def f3(a,*args,**kwargs): pass    #第二类

----------------------------------------------------

4)def f4(a,*,x,**kwargs): pass

5)def f5(a,*args,x,**kwargs): pass     #第三类

打散机制

def fn(*args,**kwargs):

  print(args)

  print(kwargs)

*单列容器 会打散单列容器   #单列容器在print下也可以打散

  作为参数进行传值时,必须在前面加上*,才可让单列容器被打散且全被args接收

**双列容器 会打散双列容器   

  作为参数进行传值时,必须在前面加上**,才能把双列容器打散并被kwargs接收

案例:

def fn(*args,**kwargs):print(args)print(kwargs)
fn((1,2,3),{'a':1,'b':2})       #((1, 2, 3), {'a': 1, 'b': 2})#  {}    不加*号都会被作为位置实参被args接收

fn(*(1,2,3),**{'a':1,'b':2})    #(1, 2, 3)      成功打散案例#{'a': 1, 'b': 2}

函数的嵌套调用

  在被调用的函数中去调用其他的函数的功能

    复用之前已经定义好的函数,功能一定是有重叠

#注:在提前声明的函数中可以嵌套调用之后声明的函数

    但是本函数的调用必须要在之后声明的函数(本函数里嵌套的函数)的之后

案例分析:

def max_two(n1,n2):     #求两个数的大着if n1 > n2:return n1return n2
print(max_two(10,11))
def max_three(n1,n2,n3):    #求三个数的大着a1 = max_two(n1,n2)return max_two(a1,n3)
print(max_three(12,11,14))
def max_four(n1,n2,n3,n4):     #求四个数的大着a1 = max_three(n1,n2,n3)return max_two(a1,n4)
print(max_four(12,123,242,523))

转载于:https://www.cnblogs.com/hesujian/p/10771575.html

python day11相关推荐

  1. Python Day11

    安装 ubuntu 14.04 sudo apt-get install -y mysql-client-5.6 mysql-common-5.6 Q1 忘记root密码 1 : sudo vi /e ...

  2. Python Day11 魔方方法

    Python种的魔方方法 Python种有许多魔方方法供我们使用 魔法方法被双下划线包围,例如__init__. 魔法方法的第一个参数应为cls(类方法) 或者self(实例方法). 下面介绍常见的魔 ...

  3. 跟着太白老师学python day11 可迭代对象和迭代器

    如果对象的属性中有__iter__属性就说明是可迭代的,容器类的数据类型都是可迭代对象 如果对象的属性中既有__iter__属性也有__next__属性,就说明这个对象是迭代器 如何判断一个函数是不是 ...

  4. python Day1作业:用户三次登陆锁定

    点击(此处)折叠或打开 #!/usr/bin/env python # -*- coding:utf8 -*- import os import sys # userfile = file('user ...

  5. python将多个列表合并_Python中多个列表与字典的合并方法

    Python中多个列表与字典的合并方法 1多列表的合并 1)a+=b a=['','',''] b = ['','',''] a += b print(a) >>>['','','' ...

  6. python 之路,Day11 (下)- sqlalchemy ORM

    python 之路,Day11 - sqlalchemy ORM 本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 表结构设计作业 1. ORM介绍 ...

  7. Python菜鸟入门:day11文件操作

    写在前面: 此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 传送门: day01基础知识 day02知识分类 day03 ...

  8. python求和函数1-n_PYTHON1.day11(n)

    day10回顾 函数名是变量,它用来绑定"函数" 函数可以作为参数传入另一个函数 函数可以返回另一个函数 函数的嵌套定义 def f1(): def f2(): pass f2() ...

  9. 轩小陌的Python笔记-day11 函数进阶

    day11 函数进阶 目标:掌握函数相关易错点 & 项目开发必备技能. 今日概要: 参数的补充 函数名到底是什么? 返回值和print,傻傻分不清楚. 函数的作用域 1.参数的补充 在函数基础 ...

最新文章

  1. CountDownLatch 的 .await() 的线程阻塞 和countDown() 计时唤醒
  2. 如何高效地学习和工作:计算机行业人员出门便携装备推荐
  3. 特斯拉推出儿童版电动四轮越野摩托车
  4. 【Java习作】KWIC模拟
  5. Heartbeat+DRBD+MySQL高可用架构方案与实施过程细节
  6. 全球顶级开源大神们现身 COSCon‘20
  7. 熊猫merge()–合并两个DataFrame对象
  8. 小米8可以刷鸿蒙os,鸿蒙 OS 2.0 来了!小米也能用么?
  9. 【Dos默认路径设置】
  10. 薪资16K,进华为外包怎么样?
  11. 技术人的职场晋级指南:当心“1万小时定律”毁了你!
  12. Calendar.getInstance() gives error in Android Studio
  13. 计算机认识新朋友教案,认识新朋友教案
  14. css复合选择器(后代选择器、子代选择器、并集选择器、链接伪类选择器、:focus选择器)
  15. 瞎姬霸写之畅想互联网
  16. iOS release版本
  17. 京东商城项目实战(1)------京东商城首页
  18. C# 窗口关闭再次确认及取消
  19. 炫酷登录界面(html+css)
  20. Computer Integrated Manu-facturing,简称CIM

热门文章

  1. 【App 支付】交易查询接口
  2. 在IE中用js改变table的innerHTML属性报“未知的运行时错误”
  3. Android 系统默认参数的修改
  4. android AIDL 入门讲解非常好的文章(网页代码着色给力)
  5. 网站域名备案时需要什么资料
  6. Uva_11235_Frequent values
  7. 使用RESIZE方法解决临时表空间(TEMP)过大问题
  8. xcode快捷键大全(转)
  9. 一步一个脚印学习WCF系列之WCF概要—生成元数据与代理(五)
  10. 腾讯 Tars-Go 服务获取自定义模版(配置)值