内部python类、模块或函数scop的初始化

2024-03-29 09:19:46 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的代码用python2、python3、jython和pypy打印a1 m。因此,我认为这是一种被通缉的行为。但是,我不明白为什么在C1类作用域x中使用周围的函数作用域进行求值,而在C2中,下面的x = x使前面的x使用周围的模块作用域进行求值。你知道吗

x = "m"
def a1():
    x = "a1"
    class C1(object):
        print(x)
a1()
def a2():
    x = "a2"
    class C2(object):
        print(x)
        x = x
a2()

在一个附加的内部函数中使用x = x行是一个语法错误,这很好。但是在一个函数的内部类中,这似乎是可以接受的,尽管语义很奇怪?你知道吗


Tags: 函数代码a2objectdefa1jythonpypy
1条回答
网友
1楼 · 发布于 2024-03-29 09:19:46

在类定义中定义变量时,实际上是在指定该类的属性,但在引用变量时,可以引用类外部变量的属性。因此,当你说x = x时,它和说C2.x = x是一样的

相关问题 更多 >