3 回答

肥皂起泡泡
TA贡献1829条经验 获得超6个赞
Python 按值传递对象的引用。
Python按值传递对象的引用(如Java),Python中的所有内容都是对象。这听起来很简单,但是你会注意到一些数据类型似乎表现出按值传递的特征,而其他数据似乎就像传递引用一样...这是什么交易?
理解可变和不可变对象很重要。某些对象(如字符串,元组和数字)是不可变的。在函数/方法中更改它们将创建一个新实例,并且不会更改函数/方法之外的原始实例。其他对象(如列表和词典)是可变的,这意味着您可以就地更改对象。因此,更改函数/方法内的对象也会更改外部的原始对象。

慕容708150
TA贡献1831条经验 获得超4个赞
事实是,整个参考/值概念将不适合python。Python没有变量的“价值”。Python只有引用对象的对象和名称。
因此,当您调用函数并在括号内放置“名称”时,如下所示:
def func(x): # defines a function that takes an argument
... # do something here
func(myname) # calling the function
myname传递指向的实际对象,而不是名称 myname 本身。在函数内部,给出了另一个name(x)来引用传递的同一个对象。
您可以修改函数内部的对象(如果它是可变的),但您无法更改外部名称指向的对象。就像你做的那样
anothername = myname
因此,我可以回答你的问题:
它是“按值传递”,但所有值都只是对象的引用。
添加回答
举报
0/150
提交
取消