【发布时间】:2020-05-17 18:21:57
【问题描述】:
为什么第一个代码输出 51 而第二个代码输出 21。我理解第二个代码应该输出 21,但是按照我的理解,第一个代码也应该输出 21(b 的值变为 20,然后调用函数 f)。我错过了什么?
b = 50
def f(a, b=b):
return a + b
b = 20
print(f(1))
输出:51
b = 50
b = 20
def f(a, b=b):
return a + b
print(f(1))
输出:21
编辑:这与How to change default value of optional function parameter in Python 2.7?不同,因为这里讨论的是默认参数发生的无意更改,而不是如何有意更改默认参数的值,即这里的问题集中在python解释器如何处理位置具有默认参数的函数的函数定义。
【问题讨论】:
标签: python python-3.x