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)
有什么我可以通过实际参考传递变量吗?
在下面的代码中,我定义了两个函数。main和cube。我想main成为我的程序的开始,所以我cube在里面调用了main:
>>> def main():
number = int(input('Enter a number: '))
cubed_number = cube(number)
print("The number cubed is: ", cubed_number)
>>> def cube(number):
return number * number * number
>>>
Run Code Online (Sandbox Code Playgroud)
但是我在定义cube之后main,所以我认为我的代码会引发一个NameError. 然而,Python 并没有引发异常,而是完美地执行了我的代码:
>>> main()
Enter a number: 5
The number cubed is: 125
>>>
Run Code Online (Sandbox Code Playgroud)
发生了什么?为什么 Python 能够运行我的代码,而不知道它cube是如何定义的?NameError怎么没有升职?
更奇怪的是,当我尝试对类做同样的事情时,Python 确实引发了一个NameError:
>>> class Main:
cubed_number()
Traceback (most recent call last): …Run Code Online (Sandbox Code Playgroud)