Python文档似乎不清楚参数是通过引用还是值传递,以下代码生成未更改的值'Original'
class PassByReference:
def __init__(self):
self.variable = 'Original'
self.change(self.variable)
print(self.variable)
def change(self, var):
var = 'Changed'
Run Code Online (Sandbox Code Playgroud)
有什么我可以通过实际参考传递变量吗?
我正在尝试理解Python的变量范围方法.在这个例子中,为什么f()能够改变x内部感知main()的价值,而不是价值n?
def f(n, x):
n = 2
x.append(4)
print('In f():', n, x)
def main():
n = 1
x = [0,1,2,3]
print('Before:', n, x)
f(n, x)
print('After: ', n, x)
main()
Run Code Online (Sandbox Code Playgroud)
输出:
Before: 1 [0, 1, 2, 3]
In f(): 2 [0, 1, 2, 3, 4]
After: 1 [0, 1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud) 在某些语言中,您可以使用特殊的保留字(如ref或val)通过引用或值传递参数.当您将参数传递给Python函数时,它永远不会在离开函数时改变参数的值.唯一的方法是使用全局保留字(或者我当前理解它).
例1:
k = 2
def foo (n):
n = n * n #clarity regarding comment below
square = n
return square
j = foo(k)
print j
print k
Run Code Online (Sandbox Code Playgroud)
会表现出来
>>4
>>2
Run Code Online (Sandbox Code Playgroud)
显示k是不变的
在此示例中,变量n永远不会更改
例2:
n = 0
def foo():
global n
n = n * n
return n
Run Code Online (Sandbox Code Playgroud)
在此示例中,变量n已更改
在Python中是否有任何方法可以调用函数并告诉Python 参数是值还是引用参数而不是使用全局?
其次,在A级剑桥考试,他们现在说一个函数返回一个单一而过程返回值超过一个值.在80年代,我被教导了一个函数有一个返回语句,而程序没有.为什么现在不正确?