运行中
def function():
global global_values
global_values: str = []
提供
SyntaxError: annotated name 'global_values' can't be global
这是有什么原因吗?
运行中
def function():
global global_values
global_values: str = []
提供
SyntaxError: annotated name 'global_values' can't be global
这在PEP-526中已经有所解释:
在同一函数范围内尝试注释受
global
或nonlocal
约束的变量是非法的:
def f():
global x: int # SyntaxError
def g():
x: int # Also a SyntaxError
global x
global
和nonlocal
不拥有变量;因此,类型注释应该属于拥有变量的作用域。global
是一个语句,声明一个名称与globals()
类似字典容器中的键相匹配。
如果该键尚未存在于globals()
类似字典容器中,则将添加该键,并在那时默认设置为None。
如果在全局范围内分配了一个变量(并在那时定义),则将该变量的 名称添加到globals()
类似字典容器中,并将 值设置为与名称匹配的键的值在globals()
类似字典容器中。globals()
类似字典容器中。
不幸的是,您无法在与使用global添加该变量名称到globals()
类似字典容器相同的行中对该变量进行赋值。globals()
类似字典容器将隐式地使其成为Python类型体系中的可选类型。
global
和类型注释
时,我遇到了相同的错误。将类型注释
放在全局空间中解决了这个问题。PS:在我的设置中执行您提出的Python 3.8.8代码行不会生成任何错误。 - Mike