Python 有人能解释一下为什么会这样编译吗?

Python 有人能解释一下为什么会这样编译吗?,python,python-3.x,variable-assignment,assignment-operator,Python,Python 3.x,Variable Assignment,Assignment Operator,我是Python的新手,正在进行实验,并刚刚运行了以下代码: a=13 a==14 print(a) 由于第二行的原因,我希望程序不会编译,尽管令人惊讶的是它确实编译了(尽管我看不到它做了任何更改)。有人能解释一下原因吗?如果我使用a===14而不是a==14则出现错误。a=13将值13分配给a a==14比较a和14并返回false,因为13!=十四, 所以a==14是有效的,a==14不是一个语句,它是一个表达式。它生成一个布尔结果,该结果一产生就被丢弃。这句话对节目绝对没有影响 另一方面

我是Python的新手,正在进行实验,并刚刚运行了以下代码:

a=13
a==14
print(a)

由于第二行的原因,我希望程序不会编译,尽管令人惊讶的是它确实编译了(尽管我看不到它做了任何更改)。有人能解释一下原因吗?如果我使用
a===14
而不是
a==14
则出现错误。

a=13将值13分配给a

a==14比较a和14并返回false,因为13!=十四,


所以a==14是有效的,a==14不是一个语句,它是一个表达式。它生成一个布尔结果,该结果一产生就被丢弃。这句话对节目绝对没有影响

另一方面,python中没有
==
操作符,这就是在这种情况下程序失败的原因。与javascript相反,python是一种强类型语言,它不进行隐式转换。python的
=
类似于javascript中的
==

这里 a=13将为变量a赋值13

a==14将检查a的值是否为14

a===13将给出错误,因为没有运算符
===


因索尔特<代码>=运算符赋值,
=
比较和
=
没有这样的运算符

实际代码是a=13(新行)a==14(新行)打印(a)为什么
=
无效?在REPL中,它将打印一个布尔值以进行相等性检查。在脚本中,它仍然执行相等性检查,但只是放弃结果
=
是赋值,
=
检查值是否相等
a==4
是有效的Python表达式。它的计算结果为真或假。感谢roganjosh和khelwood,我得到了你的观点,因为
==
是一个比较运算符……严格来说,它是一个语句。这是一个表达式语句。请参阅中的
expr\u stmt