【问题标题】:Nested Scopes and Lambdas嵌套范围和 Lambda
【发布时间】:2011-01-01 13:00:38
【问题描述】:
def funct():
    x = 4
    action = (lambda n: x ** n)
    return action

x = funct()
print(x(2)) # prints 16

...我不太明白为什么 2 会自动分配给 n?

【问题讨论】:

  • [初学者] 和 [lambda]。考虑到 lambdas 不适合初学者并跳过它们。别理他们。你不需要它们。

标签: python lambda nested


【解决方案1】:

它不是“自动”分配的:它是非常明确地分配的,并且-通过您将它作为与n 参数对应的实际参数传递而自动分配。设置x 的复杂方法几乎与def x(n): return 4**n 相同(除去x.__name__ 和其他次要内省细节)。

【讨论】:

    【解决方案2】:

    nfunct 返回的匿名函数的参数。 funct 的完全等价定义是

    def funct():
        x = 4
        def action(n):
            return x ** n
        return action
    

    这种形式更有意义吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-28
      • 1970-01-01
      • 1970-01-01
      • 2022-12-01
      • 2010-12-18
      相关资源
      最近更新 更多