为什么第一个代码输出 51而第二个代码输出 21。我理解第二个代码应该输出21,但我理解的方式,第一个代码也应该输出21(b的值变成20然后调用函数f)。我错过了什么?
b = 50
def f(a, b=b):
return a + b
b = 20
print(f(1))
Run Code Online (Sandbox Code Playgroud)
输出:51
b = 50
b = 20
def f(a, b=b):
return a + b
print(f(1))
Run Code Online (Sandbox Code Playgroud)
输出:21
编辑:这与如何更改 Python 2.7 中可选函数参数的默认值不同? 因为这里讨论的是默认参数发生的无意变化,而不是如何有意更改默认参数的值,即这里的问题集中在python解释器如何处理具有默认参数的函数的函数定义位置。