为什么我不能向属于不同模块的变量写入值?

2024-03-28 12:12:03 发布

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

我有2个文件

文件a.py

some_boolean = True

文件b.py

from a import *
def blah():
    if some_boolean:
        do_something()
    some_boolean = not some_boolean

代码在没有some_boolean = not some_boolean行的情况下运行得非常好,但是一旦我把它添加回来,我就得到了UnboundLocalError: local variable 'some_boolean' referenced before assignment

我已经捶了好几个小时的头,但我似乎不明白。有什么想法吗


Tags: 文件代码frompyimporttrueifdef
1条回答
网友
1楼 · 发布于 2024-03-28 12:12:03

您需要执行a的限定导入,并使用全名a.some_boolean

import a

def blah():
    if a.some_boolean:
        do_something()
    a.some_boolean = not a.some_boolean

您的代码some_boolean = not some_boolean试图创建一个新的局部变量。这不起作用,因为名称some_boolean用于局部变量,而阴影覆盖了相同名称的全局变量。 通常,局部变量和全局变量不应使用相同的名称

相关问题 更多 >