为何Python中`a: 2`语句未触发语法异常?
为什么
a : 2在Python 3.10.6里不会触发语法错误 这是Python 3.6开始引入的变量注解语法允许的写法:
- 变量注解不要求必须跟赋值语句绑定,也不限制注解内容只能是类型对象——任何合法的Python表达式都能当注解用。
- 执行
a : 2时,解释器只会把2存成变量a的注解信息,不会报错。但如果这时候去访问a,会触发NameError,因为a还没被赋值。 - 举个实际运行的例子:
>>> a : 2 >>> print(a) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'a' is not defined - 这种语法原本是给静态类型检查工具(比如mypy)用的,让开发者能给变量标注类型,但Python本身不限制注解的内容,所以用常量、函数调用之类的表达式当注解都合法。
内容的提问来源于stack exchange,提问作者r00ta
相关产品推荐
相关产品推荐

