嵌套作用域和 Lambda

发布于 2024-08-16 16:12:28 字数 163 浏览 3 评论 0原文

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

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

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

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

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

... I don't quite understand why 2 is assigned to n automatically?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

与君绝 2024-08-23 16:12:28

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

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

这种形式更有意义吗?

n is the argument of the anonymous function returned by funct. An exactly equivalent defintion of funct is

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

Does this form make any more sense?

南城旧梦 2024-08-23 16:12:28

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

It's not assigned "automatically": it's assigned very explicitly and non-automatically by your passing it as the actual argument corresponding to the n parameter. That complicated way to set x is almost identical (net of x.__name__ and other minor introspective details) to def x(n): return 4**n.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文