python - 为什么声明顺序对于模块中带注释的全局变量很重要?

标签 python

我正在尝试从我将使用 import tmp_test.main 调用 tmp_test 的模块中导入 main

main.py 看起来像这样:

def func():
    global x
x:int = 1

在交互式 shell 中运行此代码没有问题,但是当我尝试导入它或使用 python main.py 从命令行运行它时,我得到:

SyntaxError: annotated name 'x' can't be global

这是为什么?

将语句的顺序调换为:

x:int = 1
def func():
    global x

工作正常。

不包括注解:int

def func():
    global x
x = 1

也很好用。

最佳答案

显然这是 Python 的一个错误...

https://bugs.python.org/issue34939

所以不要过多地去思考这个选择背后的逻辑推理;这不是一个选择,而是发生了。现在已修复。

关于python - 为什么声明顺序对于模块中带注释的全局变量很重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60466092/

相关文章:

python - 如果组包含空列,则删除行

python - Python 单行语法错误

python - 如何只查看列表中所有列表中的第三个值

python - 用重复值填充 Panda 数据框中的空白

python - 使用 Python 将 Flask 请求复制到另一个 Flask 应用

python - redshift 连接的粘合作业 : "Unable to find suitable security group"

Python按时间字符串对二维列表进行排序

python - 添加类型信息而不依赖于输入模块

python - Python 中类似 C 的结构

python - 如何在 tensorflow 中将 "tensor"转换为 "numpy"数组?