函数定义后为什么不能更改默认值?
i = 5
def f(arg=i):
print(arg)
i = 6
f()
我正在从官方文档中学习 Python。在那里我找到了上面的一段代码,我无法理解为什么打印 5 而不是 6。我对 Python 比较陌生。有人可以帮我理解这个概念吗?
回答
def f(arg=i)说“让我成为一个函数f,其中默认值是现在的arg任何值i”。在定义函数时,i=5.
- Accurate, not misleading. It's a fundamental issue of Python that should be understood well.
回答
i = 5
def f(arg=i)
print(arg)
的i在定义的时间进行评价时,那么上面的代码的含义与下面的代码相同的:
def f(arg=5)
print(arg)
这意味着,当不带参数调用函数时,无论现在的值是什么,arg都将具有值。5i
为了得到你想要的,只需执行以下操作:
def f(arg)
print(arg)
i = 6
f(i)