函数基础
定义函数 define
def 函数名(形参1,形参1,*args,**kwargs):
函数内容
return None # 默认返回空值
先定义,后调用
参数类型:
位置参数 :按照从左到右的顺序定义的参数
- 位置形参:必选参数
- 位置实参:按照位置给形参传值
默认参数 :形参在定义时就已经为其赋值
- 可以传值也可以不传值,经常需要变得参数定义成位置形参,变化较小的参数定义成默认参数(形参)
- 注意1:只在定义时赋值一次
- 注意2:默认参数的定义应该在位置形参右面
- 注意3: 默认参数通常应该定义成不可变类型
关键字参数: 按照key=value的形式定义的实参
- 无需按照位置为形参传值
- 注意1:关键字实参必须在位置实参右面
- 注意2:对同一个形参不能重复传值
可变长参数/非固定参数
- 可变长指的是实参值的个数不固定
- 而实参有按位置和按关键字两种形式定义,针对这两种形式的可变长,形参对应有两种解决方案来完整地存放它们,分别是*args,**kwargs
命名关键字参数:*后定义的参数,必须被传值(有默认值的除外),且必须按照关键字实参的形式传递
- 可以保证,传入的参数中一定包含某些关键字
调用方式:
- 语句形式:foo()
- 表达式形式:3*len('hello')
- 当中另外一个函数的参数:range(len('hello'))
函数内不可修改全局变量,除非全局变量内有可变类型的子元素。
函数返回值
- 无return->None
- return 1个值->返回1个值
- return 逗号分隔多个值->元组
嵌套函数
由内向外执行,变量优先级内部最高,如没有定义,一层层往外找