流畅的python和cookbook学习笔记(八)

时间:2021-11-12 06:27:47

1.函数的默认参数必须不可变

  如果函数的默认参数为可变的对象,那么默认参数在函数外被修改也会影响到函数本身的。

>>> def spam(a, b=None):  # b要为不可变参数,不能使用空列表 [] 等可变参数
...
if b is None:
... b
= []
...

 

2.匿名函数

  1.想不出函数名时,或想要一种短小的操作,可以使用匿名函数

>>> sum = lambda x, y: x + y
>>> sum(2, 3)
5
>>> def sum(x, y): # 上面的匿名函数,相当于这个函数
... print(x + y)
...
>>> sum(3, 4)
7

  2.匿名函数中的绑定变量

>>> x = 10
>>> a = lambda y: x + y
>>> x =20
>>> b = lambda y: x +y
>>> a(5) # 发现不是期望的15,因为x被改变了
25
>>> b(5)
25
>>> x = 25
>>> a = lambda y, x=x: x + y # 在定义时绑定x,x就为局部变量了,不受x改变的影响
>>> b = lambda y, x=x: x + y
>>> a(5)
30
>>> b(5)
20