Python和Java参数传递

Python and Java parameter passing

本问题已经有最佳答案,请猛点这里访问。

我在一些地方见过,包括Python使用传递"赋值"语义的Python文档。来自Java背景的,在这里常见的错误是"Java通过值传递原语,引用对象引用"是由于对象引用通过值传递的结果,我不禁想知道Python是否真的在做同样的事情。

在我看来,按值传递对象引用和传递赋值的概念是相同的。python使用"pass-by-assignment"一词是否试图缓解存在错误语句(如我上面描述的语句)的问题?如果是这样,是否公平地说参数传递在两种语言中以类似的方式工作?

编辑:我不认为这个问题是重复的。这里我要问Python使用的术语,直接引用Java是如何做事情的。另一个问题是语言是传递值还是传递引用。我知道通过赋值是这里使用的术语,但我的论点似乎得到了公认的答案的支持,这与Java做事情没有什么不同,只是一个不同的名字而已。


在这方面,Python似乎相当于爪哇。来自http://learnpython.pbworks.com/w/page/15956522/assignment:

But you must be careful about what is meant by"changes to
parameters". Assigning a new value to a parameter name (inside the
function, a parameter is just a local variable) does not change the
original object--it only rebinds the local variable to a new object.

所以,python按值传递"对象引用"。