在Python中传递值

当你将一个像list,array这样的集合传递给python中的另一个函数时,是否会复制它,或者它只是一个指针?



皈依舞
浏览 481回答 3
3回答

肥皂起泡泡

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

慕容708150

事实是,整个参考/值概念将不适合python。Python没有变量的“价值”。Python只有引用对象的对象和名称。因此,当您调用函数并在括号内放置“名称”时,如下所示:def func(x): # defines a function that takes an argument    ... # do something herefunc(myname) # calling the functionmyname传递指向的实际对象,而不是名称 myname 本身。在函数内部,给出了另一个name(x)来引用传递的同一个对象。您可以修改函数内部的对象(如果它是可变的),但您无法更改外部名称指向的对象。就像你做的那样anothername = myname因此,我可以回答你的问题:它是“按值传递”,但所有值都只是对象的引用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python