在c++,c#,js等语言中:
函数定义(参数)
函数体:参数修改
这里的参数修改都是仅限于这个函数体内的
python不知道是不是bug,我们这样写:
def test(a=[]):
a.append(1);print(a)
然后多次执行test函数:
>>> test()
[1]
>>> test()
[1, 1]
>>> test()
[1, 1, 1]
>>> test()
[1, 1, 1, 1]
你会发现输出的值在变,这是个有趣的坑——形参在变。
>>> test([2])
这并不会影响这个全局形参的值,再次调用默认参数的test:
>>> test()
[1, 1, 1, 1, 1]