gpt4 book ai didi

python - 内部Python类、模块或函数作用域的初始化

转载 作者:太空宇宙 更新时间:2023-11-03 16:55:37 25 4
gpt4 key购买 nike

以下代码使用 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 是一个语法错误,但这没关系。但是在函数内的内部类中,这似乎是可以接受的,尽管语义相当奇怪?

最佳答案

当您在类定义中定义变量时,您实际上是在分配该类的属性,但是当您引用变量时,您可能引用该类的属性外部变量。因此,当您说 x = x 时,它与说 C2.x = x

是一样的

关于python - 内部Python类、模块或函数作用域的初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35440939/

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