全局/内部变量冲突?(蟒蛇)

Sai*_*ama 1 python variables

抱歉这个愚蠢的问题,我是一个新手程序员.但是,任何人都可以告诉我为什么以下程序的行为方式?

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仍然没有变化?为什么?

非常感谢!

Sam*_*uns 5

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)