按引用传递和按名称传递的参数传递模式有什么区别这里是 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/