有人可以解释为什么编译吗?

-9 python variable-assignment assignment-operator python-3.x

我是Python的新手,正在尝试并运行了以下代码:

a=13
a==14
print(a)
Run Code Online (Sandbox Code Playgroud)

我希望该程序不会由于第二行而编译,尽管令人惊讶的是它可以编译(尽管我看不到它所做的任何更改)。有人可以解释为什么吗?如果我使用a===14而不是a==14错误。

blu*_*ote 5

a==14不是陈述,而是表达。它产生一个布尔结果,该布尔结果一产生就被丢弃。这条线对程序绝对没有影响。

另一方面,===python中没有运算符,因此在这种情况下程序会失败。与javascript相反,python是一种强类型语言,它不执行隐式转换。该==蟒蛇是类似于===JavaScript中。

  • 严格来说,它*是*一个声明。这是一个表达式语句。请参阅 [语法](https://docs.python.org/3/reference/grammar.html) 中的 `expr_stmt`。 (2认同)