python - 参数 : passed by reference vs passed by name

标签 python parameter-passing pass-by-reference

按引用传递和按名称传递的参数传递模式有什么区别这里是 Python 中的一个示例,但假设我们不使用任何 Python 规则:

def P(x,y)
   global i
   y=1
   print(x)
   i=2
   print(x,y)
i=0
a = [7,11,13]
P(a[i],i)
P(i,a[i])

所以这里通过引用传递参数将给出输出:

  • 7
  • 7, 2
  • 2
  • 2, 1

如有错误,敬请谅解。

按名称传递表示我们只是应用文本替换,但我仍然对如何使用按名称调用获取输出感到困惑。有帮助吗?

这是我通过名称传递得到的结果:

  • 7
  • 11, 2
  • 2
  • 2, 1

正确吗?

最佳答案

在 Python 中,您有可变或不可变的对象。所有名称都是对对象的引用。换句话说,一切都是引用。您不会在 Python 中“按值传递”。只有通过引用传递。如果您尝试修改不可变对象(immutable对象)(例如数字或字符串),您会自动获得一个新副本。您可以返回该新值。如果你传递一个可变对象(例如 list 或 dict),对象被修改,你不必返回它。如果你不想,你应该先复制你的对象。您可以为此使用 dict.copy()list[:] 语法。

关于python - 参数 : passed by reference vs passed by name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5940533/

相关文章:

java - Java 是否允许在不将返回数据捕获到本地列表的情况下对列表进行排序之类的操作?

C# 使用 params 关键字的结果不一致

java - 重构方法时要选择什么方法,才能符合整洁代码的原则?

Python 抽象基类 : Why doesn't abc prevent instantiation?

python - 将多个嵌套列表转换为整数

python - Django Dumpdata - 格式化日期和时间输出

传递给函数时更改数组指针的值

具有非原始类型的 C++ 按值传递?

c# - 对象作为参数传递给另一个类,按值还是按引用?

python - 如果它是通过 query_property 创建的,是否可以缩小 SQLAlchemy 中生成的查询的范围?