在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])因此,这里通过引用传递参数将给出输出:
如果有任何错误,我提前道歉。
传递名称说,我们只是应用文本替代,但我仍然对如何使用名称调用获取输出感到困惑。有什么帮助吗?
下面是我所使用的传递名称:
是对的吗?
发布于 2012-10-25 00:43:04
几乎是一样的。但有时他们的工作方式不同。下面是一个例子。
Effect of the call swap (x, y):
temp := x;
x := y;
y := temp
Effect of the call swap (i, x[i]):
temp := i;
i := x[i];
x[i] := temp
It does not work! For example:
Before call: i = 2, x[2] = 5
After call: i = 5, x[2] = 5, x[5] = 2这里有一个详细的描述,范围.绑定.纸尺.传递.技术。检查这篇文章“参数传递技术”,你会找到答案的。
发布于 2011-05-09 18:37:40
在Python中,对象要么是可变的,要么是不可变的。所有名称都是对对象的引用。换句话说,一切都是参考。在Python中,您不会“按值传递”。只有参考才能通过。如果您试图修改一个不可变的对象(例如数字或字符串),您将自动获得一个新的副本。您可以返回这个新值。如果您传递一个可变对象(例如,list或dict),则该对象将被修改,您不必返回它。如果你不想要,你应该先复制你的对象。为此,您可以使用dict.copy()或list[:]语法。
发布于 2011-05-09 22:38:03
我不知道这是不是你想要的,但我可以解释一下按名字打电话和按名字打电话的区别。如果通过引用调用带有参数的函数,则对该变量的任何修改都会在调用该变量的函数中更改它。例如,如果以下函数通过引用获得x:
def foo(x):
x = x+1
def main():
x = 5
foo(x)
print x如果你叫了它的名字,它就会打印5。
这有意义吗?
https://stackoverflow.com/questions/5940533
复制相似问题