参数
1可变,不可变
2必选
3默认
4可变
5关键字
在函数之前,定义的所有的变量都是全局变量。一旦定义了,后面所有的地方一直访问使用。
在函数里定义的变量,都是局部变量,一旦函数运行完毕,局部变量就会被垃圾回收机制回收。
局部变量:1、参数
2、在函数里直接定义的变量
可变参数
* :元组
在Python函数中,还可以定义可变参数。顾名思义,可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。参数组装成一个tutple
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
** :字典
变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw)
参数组合排序:def f(a,b=1,*c,**d)
函数内部修改全局变量,报错。函数内部不能修改全局变量。
需要修改的话,需要函数的第一行加global就可以获取/设置全局变量
pass占位符
作用域
小结
递归
递归是自己调用自己的话,迭代就是A不停的调用B.
递归中一定有迭代,但是迭代中不一定有递归,大部分可以相互转换.能用迭代的不用递归,递归调用函数,浪费空间,并且递归太深容易造成堆栈的溢出.使用的时候要慎重。
python语言缺陷:递归在python语言里面运行很慢
匿名函数 lambda