为什么Python中的列表会这样做?
为什么Python中的列表会这样做?
这个问题已经在这里有答案了:
当你把像列表、数组这样的集合传递给python中的另一个函数时,它会复制它,还是只是一个指针?
admin 更改状态以发布 2023年5月20日
事实是,整个引用/值的概念无法适用于Python。Python没有变量的“值”。Python只有对象和指向对象的名称。\n\n因此,当您调用函数并将“名称”放在括号内时,如下所示:\n\n
def func(x): # defines a function that takes an argument ... # do something here func(myname) # calling the function
\n\n实际传递的是指向myname
的对象,而不是myname
本身。在函数中,会赋予另一个名称(x
)以引用传递的同一对象。\n\n如果它是可变的,则可以在函数内部修改对象,但是无法更改外部名称的指向,就像执行以下操作时一样。\n\n
anothername = myname
\n\n因此,我可以回答您的问题:这是“传值调用”,但是所有值都只是指向对象的引用。