【发布时间】:2012-11-08 23:01:21
【问题描述】:
在某些语言中,您可以使用 ref 或 val 等特殊保留字通过引用或值传递参数。当您将参数传递给 Python 函数时,它永远不会在离开函数时更改参数的值。唯一的方法是使用 global 保留字(或者我目前理解的) .
示例 1:
k = 2
def foo (n):
n = n * n #clarity regarding comment below
square = n
return square
j = foo(k)
print j
print k
会显示
>>4
>>2
显示 k 不变。
在这个例子中,变量 n 永远不会改变
示例 2:
n = 0
def foo():
global n
n = n * n
return n
在此示例中,变量 n 已更改。
在 Python 中有什么方法可以调用一个函数并告诉 Python 参数 是 a value 或 reference 参数而不是使用全球?
其次,在剑桥 A 级考试中,他们现在说函数返回单个值,而过程返回多个值。在 80 年代,我被教导一个函数有一个返回语句而过程没有。为什么现在不正确了?
【问题讨论】:
-
我找到的了解python调用模型的最佳资源是effbot上的这篇文章:effbot.org/zone/call-by-object.htm
-
您应该阅读有关 Python 变量、可变和不可变对象的信息。同样在您的第一个示例中,为什么要更改
n,您正在使用新变量square来存储计算结果。 -
请不要将两个不相关的问题合二为一。函数与过程的定义是定义问题,您的定义似乎偏向于 Pascal。在 Python 行话中没有过程之类的东西。
-
另外,看看这个以前的 StackOverflow 答案。 stackoverflow.com/a/10262945/173292 相当直观地解释了对象引用模型的调用。
-
另请参阅此 SO 问题以获得非常有用的解释:how do I pass a variable by reference
标签: python