2024-04-18 23:41:09 发布
网友
我正在学习Python,遇到了一个我不太理解的例子。在官方教程中,给出了以下代码:
i = 5 def f(arg=i): print(arg) i = 6 f()
来自c++,直觉上这将打印5。但我也想理解技术上的解释:“默认值是在定义范围中的函数定义点处计算的。”这里的“定义范围”是什么意思?在
1. i = 5 2. 3. def f(arg=i): 4. print(arg) 5. 6. i = 6 7. f()
在#1,i = 5被求值,变量及其值被添加到作用域中。在
i = 5
在第3行,计算函数声明。此时,所有默认参数也将被计算。i包含值5,因此arg的默认值是5(而不是符号i)。在
i
5
arg
在i更改第6行的值之后,arg已经是5,所以它没有改变。在
在#1,
i = 5
被求值,变量及其值被添加到作用域中。在在第3行,计算函数声明。此时,所有默认参数也将被计算。
i
包含值5
,因此arg
的默认值是5
(而不是符号i
)。在在
i
更改第6行的值之后,arg
已经是5,所以它没有改变。在相关问题 更多 >
编程相关推荐