在分配变量时,我不小心使用了:
而不是=
,但令我惊讶的是它没有产生错误。例如,以下运行没有任何投诉:
Python 3.7.4 (default, Jul 9 2019, 18:15:00)
[Clang 10.0.0 (clang-1000.11.45.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a: 'hello world'
>>>
但是,这似乎没有任何作用。我尝试查看文档和教程,但只找到compound statements,dict comprehensions和sequence slicing,在这种情况下我都看不到这两种方法都适用。
为进行比较,在Python 2.7中,确实会生成语法错误:
Python 2.7.16 (default, Apr 12 2019, 15:32:52)
[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.11.45.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a: 'hello world'
File "<stdin>", line 1
a: 'hello world'
^
SyntaxError: invalid syntax
为什么这不会在Python 3.7中引起语法错误,以及它的用途(如果有的话)?
答案 0 :(得分:4)
Python的最新版本支持称为类型提示或类型注释的语法。这种语法使您可以编写a: int
来声明在当前上下文中变量a
的类型为int
。
编译器实际上不会检查该变量,实际上会在变量名称之后允许任何表达式,因此您使用的字符串将被接受为有效的类型提示。
有关类型提示的详细说明,请参见https://www.python.org/dev/peps/pep-0526/。
如果确实在代码中添加了类型提示,则可以使用mypy之类的工具,以便执行静态类型检查。