我正在学习Python并且遇到了一个我不太了解的例子。在官方教程中,给出了以下代码:
i = 5
def f(arg=i):
print(arg)
i = 6
f()
来自c ++,直觉对我来说这将打印5.但我也想理解技术解释:“默认值在定义范围内的函数定义点进行评估。” “定义范围”在这里意味着什么?
答案 0 :(得分:1)
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,因此它不会发生变化。