我在函数中定义了一个全局变量,但是PyCharm无法引用该全局变量。 像这样的代码:
a.py:
g_Handle = None
def Init():
import mods
global g_handle
g_handle = mods.handle_class()
b.py:
import a
a.g_handle
# PyCharm will reference 'g_handle' as None,
# but I want reference 'g_handle' as mods.handle_class
我尝试为g_handle添加类型,但我不想直接在a.py中导入mod
a.py:
g_handle =None # type: mods.handle_class
但这是行不通的。找不到模组 所以我想知道如何让PyCharm可以将g_handle引用为mods.handle_class。 谢谢。
答案 0 :(得分:0)
我不确定这是否是您提出问题的方式,但看来您这里有多个问题。第一个是导入引用问题(或可能在类更有效的情况下使用导入)。
请参见,如果仅按照描述和提供的方式运行代码,则将永远无法获得所需的正确答案,因为永远不会调用a.py中的Init函数。
像在代码中一样使用之前,需要在全局范围内以某种方式定义预期的全局变量。
global语句仅告诉解释器在所有状态之间链接提供的变量的值。它不会自行在最外层作用域中定义变量。
因此,类似以下内容(编辑:已修复):
a.py:
g_handle = False
def Init():
import mods
global g_handle
g_handle = mods.handle_class()
b.py:
import a
a.Init()
a.g_handle
...应该可以返回您想要的内容。
如果您可以使用类而不是从其他模块导入,则也可以避免麻烦:
import mods
class a():
g_handle = False
global g_handle
def __init__(self, handle_class):
g_handle = handle_class()
if __name__ == "__main__":
a(mods.handle_class).g_handle