gpt4 book ai didi

类定义中的 Python 非局部语句

转载 作者:太空狗 更新时间:2023-10-29 18:25:57 25 4
gpt4 key购买 nike

<分区>

我正在尝试对 Python 3 源代码中的范围进行一些分析,但我对非局部语句语句在类定义中的工作方式感到困惑。

据我了解,类定义在一个新的命名空间(称之为 dict)中执行其主体,并将类名绑定(bind)到 type(name, bases, dict) 的结果。只要非本地 x 引用绑定(bind)在封闭的非本地范围内某处的变量,它就应该有效。

据此,我希望编译并运行以下代码:

class A:
v = 1
class B:
nonlocal v
v = 2

但这失败了

SyntaxError: no binding for nonlocal 'v' found

而下面的代码运行完美

def A():
v = 1
class B:
nonlocal v
v = 2

谁能解释一下函数定义和类定义的闭包之间的区别?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com