在运行时在python中解析注解吗?是否允许未定义?

问题描述 投票:2回答:1
>>> x : foo = 3
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'foo' is not defined
>>> def add(x):
      y : bar = 1      # No Error
      return x + y
>>> add(3)
4

很明显,没有读取名称bar,但是在运行时读取了foo。这是已知的东西吗?定义/未定义注释的当前条件是什么?在将来的版本中,这对于在任何地方定义注释都是强制性的吗?

python python-3.x annotations
1个回答
0
投票

根据文档:

https://docs.python.org/3/library/typing.html#typing.TYPE_CHECKING

不评估局部变量的类型注释

所以这说明了为什么您的第二个示例没有引发错误。

如果需要转发声明注释(即,您想使用稍后将在代码中定义的符号),则可以使用字符串文字,例如:

x: 'foo' = 3
© www.soinside.com 2019 - 2024. All rights reserved.