7.5 定义一个函数带有一个或多个参数是可选的并带有默认值
>>> def m(a,b=30):
... print(a,b)
...
>>> m(5)
5 30
>>> m(5,31)
- 如果默认值是可变类型,如数组、元组等,那么可以把None作为默认值
>>> def m1(a,b=None):
... print(a,b)
...
>>> m1(5)
5 None
>>> m1(5,(6,7))
5 (6, 7)
>>> m1(5,[6,7])
5 [6, 7]
*如果不打算提供一个默认值,想让函数自己检测出来,可以用如下方法
>>> _no_value=object()
>>> def m2(a,b=_no_value):
... if b is _no_value:
... print("b is no value")
... else:
... print(b)
...
>>> m2(5)
b is no value
>>> m2(5,6)
6
>>> m2(5,(6,7))
(6, 7)
>>> m2(5,[6,7])
[6, 7]
>>> m2(5,{6,7})
{6, 7}
>>>
- 要注意一下,函数默认参数的作用域,如果按照以下的逻辑定义参数
>>> x = 30
>>> def m3(a,b=x):
... print(a,b)
...
>>> m3(5)
5 30
>>> x=20
>>> m3(5)
5 30
>>>
- 重新给x赋值,但是并不会影响到函数的默认值b
网友评论