Python学习笔记(持续更新)
程序员文章站
2022-04-11 17:49:06
...
一. 定义函数时,默认参数的问题
1. 默认参数值为不可变对象(例如常量)时:
i = 5
def f(arg=i):
print(arg)
i = 6
f()
得到的结果将会是输出5
.
2.默认参数为可变对象(例如列表、字典或类)时:
def f(a, L=[]):
L.append(a)
return L
print(f(1))
print(f(2))
print(f(3))
这种情况下,输出的结果为:
[1]
[1, 2]
[1, 2, 3]
在python中默认值在函数定义作用域被解析,在代码运行前需要编译,绑定具体的结果,给这个方法静态分配存储空间(参数也要分配存储空间,而且默认参数的存储空间是不变的)。
如果不想让默认值在后续调用中累积,可以采用如下方法定义函数:
def f(a, L=None):
if L is None:
L = []
L.append(a)
return L
下一篇: java 图形程序设计(GUI)