Python 和 Java 参数传递

标签 python parameter-passing pass-by-reference pass-by-value

<分区>

我在几个地方看到过,包括 Python 使用“赋值”语义传递的 Python 文档。来自 Java 背景,说“Java 按值传递基元,按引用传递对象”的常见错误是由于按值传递对象引用,我不禁想知道 Python 是否真的在做同样的事情

对我来说,按值传递对象引用和按赋值传递的概念似乎是相同的。 Python 使用术语“按赋值传递”是否是为了减轻出现错误语句(例如我上面描述的语句)的问题?如果是这样,可以说参数传递在两种语言中的工作方式相似吗?

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

最佳答案

是的,Python 在这方面似乎等同于 Java。来自 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“按值”传递“对象引用”。

关于Python 和 Java 参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29776736/

相关文章:

c++ - 将 Eigen 类型与 boost::bind 一起使用是否会自动违反 Eigen 的 "only pass by reference"规则?

python - 使用 cx_Oracle 的 LIKE 中字符串的正确语法是什么?

python - MATLAB 中的 Memmap 用于大数组

python - 循环遍历图像并获取用户输入的数据标签(值从 1 到 3)

javascript - JavaScript 到 MVC : Controller Variable Passing via Actionlink

c++ - 创建对新对象的引用

java - Java 真的是按值传递对象吗?

C++ - 类方法更改成员变量,但不在 main 中

Javascript 通过引用而不是值传递?

python - 使用 TeX 和匹配格式在 matplotlib 中编写单位为负幂的轴标题