Python中的 `<>` 是什么意思?

72

我想在Python 3.3中使用一个旧的库(发布于2003年!)。当我导入它时,Python会因源文件中有<>符号而抛出错误,例如:

if (cnum < 1000 and nnum <> 1000 and ntext[-1] <> "s":
    ...

我猜这是一种现在已废弃的语言符号。

它确切地表示什么意思,以及我应该用哪个(较新的)符号来代替它?


4
我想指出,这明显不是Python 3.3库,而是Python 2.x库。 - Gareth Latty
4
!=也可以写成<>,但这是一个过时的用法,只为了向后兼容而保留。新代码应始终使用!= - Grijesh Chauhan
3
在Python 3.x中,这不是正确的写法。正如下面的回答所指出的那样,它不仅已经过时,而且根本不是有效的语法。 - Gareth Latty
让我想起了机器学习中的比较。 - squiguy
5个回答

121

这指的是不等于。 它来自于ABC(Python的前身),参见这里

x < y, x <= y, x >= y, x > y, x = y, x <> y, 0 <= d < 10

顺序测试(<>表示“不等于”

我相信ABC从Pascal中借鉴了这个符号,Pascal是Guido开始编程使用的一种语言。

在Python 3中已经被移除,请使用!=代替。 如果您疯狂地想要只允许在Py3K中使用<>,则可以使用此彩蛋

>>> from __future__ import barry_as_FLUFL
>>> 1 != 2
  File "<stdin>", line 1
    1 != 2
       ^
SyntaxError: with Barry as BDFL, use '<>' instead of '!='
>>> 1 <> 2
True

10
__future__ 导入并不是在 Python3 中“把它拿回来”。它实际上是替换!=。在进行该导入后,表达式 1 != 2 将会引发 SyntaxError - Bakuriu
9
实际上,这并不是历史事件,而是一个愚人节的玩笑。请参见PEP-401 - kirelagin
4
这是一个相关问题的链接:“from future import barry_as_FLUFL” 到底是做什么的? - Alvin Wong
1
重要的是(正如一个答案指出的那样),__future__导入只在REPL中“起作用”,而不在脚本中。 - John Y

48

它表示不相等,但是它已经被废弃了,请使用!=代替。


27
比弃严重:在Python 3中,它是一个语法错误,正如提问者所发现的那样。 - lvc
4
为什么有人会在接受的问题上加上-1?请评论,这样我就可以修复问题(如果有的话)。 - Peter Varo
1
@PeterVaro 我给你点了赞,但通常情况下(不包括这种情况!),回答被接受并不是不应该被点踩的理由,如果点踩者认为它很糟糕并且接受是一个错误的决定(再次强调,这种情况不适用于此)。 - glglgl
2
话虽如此,我也想知道这种情况下-1的原因——答案完全有效和正确。 - glglgl
1
@glglgl 我自己也遇到过这种情况 - 有人觉得问题不应该被问出来,即使答案是正确的,他们也会惩罚任何留下答案的人。我个人不相信这种做法,我只会将踩票保留给那些事实上不正确或在某种程度上有害的答案。 - Mark Ransom

18

值得注意的是,您可以使用Python本身查找文档,甚至针对谷歌无法处理的标点符号操作符。

>>> help("<>")

比较操作

与 C 不同,Python 中的所有比较操作具有相同的优先级,低于任何算术、移位或按位操作。此外,与 C 不同,表达式如a < b < c的解释在数学上是常规的:

比较运算产生布尔值:TrueFalse

比较可以任意链接,例如,x < y <= z 相当于 x < y and y <= z,只不过在这两种情况下仅评估y一次(但在x <y被发现为假时,z都不会被评估)。

形式为 <>!= 是等效的。为了与 C 保持一致,推荐使用 !=;在下文提到 != 时,也可以接受 <>。拼写形式 <> 被认为已经过时。

请参阅http://docs.python.org/2/reference/expressions.html#not-in


2
这在Python 3中也出现了(对我来说有点不同)。多奇怪啊。+1 - TerryA
这个答案本来很好,但似乎它已经过时了,就像<>运算符本身一样。@TerryA 我在Python 3.8.6中找不到那个文本了。 - Mark Ransom

15

这是一种在Python 3中已被删除的旧方法,用于指定!=。使用它的库可能存在与Python 3不兼容的各种问题:建议运行它通过2to3,其中自动更改此设置以及其他许多设置。


0

使用 !=<>。两者都表示不等于。

[参考:Python 语言参考] 比较运算符 <>!= 是同一个运算符的不同拼写方式。!= 是首选拼写方式;<> 已经过时。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接