小编Nan*_*Raj的帖子

python解释器如何处理具有默认参数的函数定义的位置

为什么第一个代码输出 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解释器如何处理具有默认参数的函数的函数定义位置。

python python-3.x

11
推荐指数
1
解决办法
379
查看次数

标签 统计

python ×1

python-3.x ×1