Python中默认参数的范围

时间:2016-06-20 08:55:02

标签: python parameters scope parameter-passing default-parameters

我正在学习Python并且遇到了一个我不太了解的例子。在官方教程中,给出了以下代码:

i = 5

def f(arg=i):
    print(arg)

i = 6
f()

来自c ++,直觉对我来说这将打印5.但我也想理解技术解释:“默认值在定义范围内的函数定义点进行评估。” “定义范围”在这里意味着什么?

1 个答案:

答案 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,因此它不会发生变化。