python - 比较值与 '==' 时, '=' 运算符的目的是什么?

标签 python

首先,请注意,我理解 == 用于比较两个表达式,而 = 用于为变量赋值。然而,python 是一种语法要求极低的简洁语言,这似乎是一个很容易砍掉的运算符。此外,我并不是要开始辩论或讨论,而是要了解我是否缺少某些东西来提高我的编程知识。

就像(在 python 中)我们不需要将变量声明为 int 或字符串,并且语言根据分配的值确定这一点,为什么“if”语句不简单地确定 = 是比较,而不是作业?

又如python去掉了很多其他语言中的{}和[],直接使用缩进,因为缩进和使用大括号是多余的。在我看来 if foo == goo: 也是多余的。但也许有些事情我还没有意识到。因此问题!

最佳答案

一个很简单的原因是python允许 bool 表达式:

a = b == c

还有多重赋值:

a = b = c

在第一种情况下,根据bc 是相等的。在第二种情况下,ab 最终引用同一个对象 (c)。显然,您无法仅通过一个运算符同时支持两者。

我想您可以(原则上)仅在 if 语句中重载 =(因为那里不允许赋值),但这会让人感到困惑——尤其是对于来自 C 的人,其中 an assignment is allowed in an if statement.禅宗又赢了(“明确胜于隐含”)。


  • 实际上不必是 bool 值。它实际上是 a__eq__ 方法(或者 b__eq__ 如果前者返回NotImplemented) -- 大多数 对象返回一个 bool 值,但有一些不返回(numpy.ndarray 是一个常见的对象,它有一个 __eq__ 返回另一个 ndarray 例如)。

关于python - 比较值与 '==' 时, '=' 运算符的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15777992/

相关文章:

python - 在python中设置默认的日期时间格式

python - python 中真的存在联合类型吗?

python - 试图了解频谱图和n_mels的形状

python - 使用 Python 中的 win32com 模块向多个收件人发送电子邮件

python - 返回三个相同连续字母的最小移动次数

python - 动态 start_urls 值

python - 如何读取包含数组的文本文件并将其放入数组中? (Python)

python - 如何使用图表上的 3 个唯一点获取贝塞尔曲线/抛物线的点

python - SublimeREPL (python) 中的字符串后面出现红线?

python - 权限错误 : Permission denied to reading CSV File in Python