一、 什么是默认形参
在定义函数时参数=’XXX‘时,此时调用时可以不给参数赋值,如f(param='default_param'),调用时f();
函数定义默认参数之后,之后的所有的形参都得是默认参数,如f(c, a='a', b='b')。
二、 默认参数为可变对象
如下:
>>> def test(a=[]):
... a.append('a')
... return a
...
>>> print(test())
['a']
>>> print(test())
['a', 'a']
>>> print(test())
['a', 'a', 'a']
>>>
默认形参值会在执行函数定义时按从左至右的顺序被求值。 这意味着当函数被定义时将对表达式求值一次,相同的“预计算”值将在每次调用时被使用,为避免这种情况应该在函数中显式的赋值可变对象,如下:
def test(a=None):
if a is None:
a = []
a.append('a')
return a