unc*_*ive 5 python parameters scope parameter-passing default-parameters
我正在学习Python并遇到了一个我不太了解的例子.在官方教程中,给出了以下代码:
i = 5
def f(arg=i):
print(arg)
i = 6
f()
Run Code Online (Sandbox Code Playgroud)
来自c ++,直觉对我来说这将打印5.但我也想理解技术解释:"默认值在定义范围内的函数定义点进行评估." "定义范围"在这里意味着什么?
1. i = 5
2.
3. def f(arg=i):
4. print(arg)
5.
6. i = 6
7. f()
Run Code Online (Sandbox Code Playgroud)
在 #1 处,i = 5对变量进行求值,并将变量及其值添加到作用域中。
在第 3 行,对函数声明进行求值。此时,所有默认参数也会被评估。i保存值5,因此arg的默认值是5(而不是符号值i)。
i更改第 6 行的值后,arg已经是 5,所以它不会改变。