代码之家  ›  专栏  ›  技术社区  ›  eozzy

嵌套范围和lambda

  •  3
  • eozzy  · 技术社区  · 15 年前
    def funct():
        x = 4
        action = (lambda n: x ** n)
        return action
    
    x = funct()
    print(x(2)) # prints 16
    

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

    2 回复  |  直到 15 年前
        1
  •  5
  •   Dale Hagglund    15 年前

    n 匿名函数的参数是否由返回 funct . 完全等价的定义 函数

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

    这个表格有意义吗?

        2
  •  3
  •   Alex Martelli    15 年前

    它不是“自动”分配的:它被非常明确地分配给 -通过将其作为对应于 n 参数。那种复杂的设置方式 x 几乎相同(净 x.__name__ 以及其他小的反省细节) def x(n): return 4**n .