如果我在打印后添加冒号,为什么解释器不会抛出错误?

Rat*_*nde 4 python syntax-error python-3.x

我在打印后添加冒号和分号,但解释器没有抛出错误。

请使用 python3.8.x(edit) 运行

x=5
print:(x)
print;(x)
Run Code Online (Sandbox Code Playgroud)

Bat*_*man 5

解释器认为冒号是一种类型注释。这就是为什么它SyntaxError在早期版本的 Python 中引发,但在 Python 3.6+ 中有效的语法

在 Python 的更高版本中,这是有效的

a: int
Run Code Online (Sandbox Code Playgroud)

就像这个

import sys

def exclaim(string):
    sys.stdout.write(f"{string}!")

print = exclaim
print("Hello")
Run Code Online (Sandbox Code Playgroud)

即您可以注释变量的类型。您可以重新分配print.

因此,当您执行print:(x)解释器时,只会认为您正在注释print为 "type" 5

分号是有效的 Python,用于将两个单独的语句放在同一行。他们只是被认为是“非蟒蛇”。你确实看到它们有时被用来做类似的事情import pdb; pdb.set_trace()

  • 但为什么?根据 [PEP526](https://www.python.org/dev/peps/pep-0526/#specification),它应该看起来像 `my_var: int`。为什么它仍然认为它是有效的? (2认同)