函数定义后为什么不能更改默认值?

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)


以上是函数定义后为什么不能更改默认值?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>