Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyCharm是否支持全局类型提示?_Python_Pycharm_Type Hinting - Fatal编程技术网

Python PyCharm是否支持全局类型提示?

Python PyCharm是否支持全局类型提示?,python,pycharm,type-hinting,Python,Pycharm,Type Hinting,我已尝试在python_存根中设置全局设置,如下所示: #Inside MyModule.pyi global MY_GLOBAL #type: list[MyClass] #Inside MyModule.py MY_GLOBAL #type: list[MyClass] #Still in the global scope here MY_GLOBAL[0].xyz #<-- Type hinting works here! 但是,当我尝试在main.py文件中索引到我的全局列表

我已尝试在python_存根中设置全局设置,如下所示:

#Inside MyModule.pyi
global MY_GLOBAL #type: list[MyClass]
#Inside MyModule.py
MY_GLOBAL #type: list[MyClass]

#Still in the global scope here
MY_GLOBAL[0].xyz #<-- Type hinting works here!
但是,当我尝试在main.py文件中索引到我的全局列表时,这似乎不起作用:

#Back inside MyModule.py
MY_GLOBAL[0].xyz #<-- Expecting type hinting to pop up after the '.'
#返回MyModule.py内部

MY_GLOBAL[0].xyz#这不是类型暗示的问题。问题是实际上根本没有
MY_GLOBAL
变量

global MY\u global
不是创建全局变量的方式。Python中没有真正的全局变量。创建模块级全局变量的方法与创建局部变量的方法相同:

MY_GLOBAL = []
但是在模块级别,而不是在函数中。如果要从其他模块访问它,则需要导入该模块并使用虚线访问符号:

import whichever_module_defined_the_global as m

m.MY_GLOBAL.append(3)
尝试使用
from
导入将导致奇怪的问题,所以不要这样做


*除了像
max
open

之类的东西之外,这不是类型暗示的问题。问题是实际上根本没有
MY_GLOBAL
变量

global MY\u global
不是创建全局变量的方式。Python中没有真正的全局变量。创建模块级全局变量的方法与创建局部变量的方法相同:

MY_GLOBAL = []
但是在模块级别,而不是在函数中。如果要从其他模块访问它,则需要导入该模块并使用虚线访问符号:

import whichever_module_defined_the_global as m

m.MY_GLOBAL.append(3)
尝试使用
from
导入将导致奇怪的问题,所以不要这样做


*除了像
max
open

之类的东西,谢谢你的回复,我想我可能把第一行打错了。正如您所描述的,它应该只是我的_GLOBAL=[]。然而,我确实设法解决了我的问题。我必须在本地函数范围中删除对“global”的引用,在这里我需要类型提示。实际上,
max
open
等也不是全局的,问题是模块
\uuuuuu内置\uuuuuu
被导入(并将其内容添加到全局范围中,如
globals()['thing']=thing
)每次解释器启动时,除非它通过了
-s
开关。@ocket888:不,它不是这样工作的。模块是
内置的
内置的
,它不会将其内容转储到
全局()中
;当在模块globals中找不到名称时,它将用作回退。在引擎盖下,框架对象有一个存储其全局变量dict的
f_内置项
成员,该成员使用另一个框架的
f_内置项
\u内置项
全局变量进行设置,而
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
通常设置为
内置模块或该模块的dict。此外,
-s
对内置变量回退没有影响;它禁用了
站点
模块的自动导入。感谢您的回复,我想我可能键入了第一行。正如您所描述的,它应该只是我的_GLOBAL=[]。然而,我确实设法解决了我的问题。我必须在本地函数范围中删除对“global”的引用,在这里我需要类型提示。实际上,
max
open
等也不是全局的,问题是模块
\uuuuuu内置\uuuuuu
被导入(并将其内容添加到全局范围中,如
globals()['thing']=thing
)每次解释器启动时,除非它通过了
-s
开关。@ocket888:不,它不是这样工作的。模块是
内置的
内置的
,它不会将其内容转储到
全局()中
;当在模块globals中找不到名称时,它将用作回退。在引擎盖下,框架对象有一个存储其全局变量dict的
f_内置项
成员,该成员使用另一个框架的
f_内置项
\u内置项
全局变量进行设置,而
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
通常设置为
内置模块或该模块的dict。此外,
-s
对内置变量回退没有影响;它禁用了
站点
模块的自动导入。标题与此处回答的实际问题无关。标题与此处回答的实际问题无关