【问题标题】:Why doesn't using nonlocal scope variable as default value for parameter work?为什么不使用非局部范围变量作为参数工作的默认值?
【发布时间】:2012-01-02 16:05:02
【问题描述】:

代码会更好地解释这一点:)

def a():
    x=0
    def b(z=x):
        print("X: %d, Z: %d" % (x,z,))
    x=5
    b()

结果:

X: 5, Z: 0

这是怎么回事?

(好吧,现在我想通了)

【问题讨论】:

  • 你说你想通了......请在下面发布你的解决方案作为答案。

标签: python parameter-passing optional-arguments


【解决方案1】:

好的,Python 文档的答案是:

在执行函数定义时计算默认参数值。 这意味着在定义函数时计算一次表达式,并且相同的“预计算”值用于每次通话。

很公平。

【讨论】:

  • 这与可变默认参数的行为经常让人绊倒的根本原因相同,也是默认参数可以在“工厂生产”的 lambda 中用于“绑定”的相同根本原因创造价值。
猜你喜欢
  • 1970-01-01
  • 2013-12-13
  • 2016-08-19
  • 2017-02-01
  • 1970-01-01
  • 2011-06-05
  • 2019-03-02
  • 2012-08-01
  • 1970-01-01
相关资源
最近更新 更多