Isr*_*ael 6 python list append
有人解释一下......
def f(i,list1=[]):
list1.append(i)
return list1
f(1)
f(2)
print(f(3))
Run Code Online (Sandbox Code Playgroud)
输出:[1,2,3].
我无法理解这一点,因为每次我的list1被初始化为空列表.
谁能解释一下这个?
您不应在参数声明中包含列表创建。
def f(i, list1=[]):
这是因为该行在到达 .txt文件时实际上创建了一个新列表[]
。创建函数时会发生这种情况。
每次该函数运行时,它都会重新使用同一个列表对象。
从程序如何逐行运行的角度来思考。实际上,def
该行在运行时最终看起来像这样:
def f(i, list1=<a-new-list-that-I-just-created>):
Run Code Online (Sandbox Code Playgroud)
并且每次调用函数时,list1默认值并不是一个新的列表,而是定义函数时创建的列表。
我相信这就是你想要的,如果你想避免这种情况,就是:
def f(i, list1=None):
if not list1:
list1=[]
list1.append(i)
return list1
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
178 次 |
最近记录: |