抱歉这个愚蠢的问题,我是一个新手程序员.但是,任何人都可以告诉我为什么以下程序的行为方式?
def lol(a):
a=[]
a.append(1)
return a
Run Code Online (Sandbox Code Playgroud)
现在当我这样做
k = [2, 3]
lol(k)
Run Code Online (Sandbox Code Playgroud)
它返回1,但k
仍然没有变化?为什么?
非常感谢!
在lol(a)
,该行a=[]
绑定a
到新列表.在此行之后,a
不再受限于同一个列表k
.所以你在函数中实际修改的是一个新列表,而不是你在参数中收到的列表.有关详细信息,请参阅文档.
如果你想k
成为[1]
,那么你可以写下这样的东西:
def lol(a):
a[:] = [1]
return a
k = [2, 3]
lol(k) # now k is equal to [1]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
85 次 |
最近记录: |