Python 中默认参数的范围
Scope for default parameter in Python
我正在学习 Python 并且遇到了一个我不太理解的例子。官方教程中给出了如下代码:
i = 5
def f(arg=i):
print(arg)
i = 6
f()
来自 c++,这将打印 5 对我来说直觉上是有意义的。但我也想了解技术解释:"The default values are evaluated at the point of function definition in the defining scope."这里的 "defining scope" 是什么意思?
1. i = 5
2.
3. def f(arg=i):
4. print(arg)
5.
6. i = 6
7. f()
在 #1,i = 5
被求值,变量及其值被添加到范围。
在第 3 行,计算函数声明。此时所有默认参数也被计算。 i
包含值 5
,因此 arg
的默认值为 5
(而不是符号 i
)。
在 i
更改第 6 行的值后,arg
已经是 5,因此不会更改。
我正在学习 Python 并且遇到了一个我不太理解的例子。官方教程中给出了如下代码:
i = 5
def f(arg=i):
print(arg)
i = 6
f()
来自 c++,这将打印 5 对我来说直觉上是有意义的。但我也想了解技术解释:"The default values are evaluated at the point of function definition in the defining scope."这里的 "defining scope" 是什么意思?
1. i = 5
2.
3. def f(arg=i):
4. print(arg)
5.
6. i = 6
7. f()
在 #1,i = 5
被求值,变量及其值被添加到范围。
在第 3 行,计算函数声明。此时所有默认参数也被计算。 i
包含值 5
,因此 arg
的默认值为 5
(而不是符号 i
)。
在 i
更改第 6 行的值后,arg
已经是 5,因此不会更改。