函数(二)

参数

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就可以获取/设置全局变量

函数(二)_第1张图片

pass占位符


作用域


函数(二)_第2张图片

小结


函数(二)_第3张图片

递归

递归是自己调用自己的话,迭代就是A不停的调用B.

递归中一定有迭代,但是迭代中不一定有递归,大部分可以相互转换.能用迭代的不用递归,递归调用函数,浪费空间,并且递归太深容易造成堆栈的溢出.使用的时候要慎重。


python语言缺陷:递归在python语言里面运行很慢

函数(二)_第4张图片


函数(二)_第5张图片
函数(二)_第6张图片

匿名函数 lambda


函数(二)_第7张图片

你可能感兴趣的:(函数(二))