我想在Python 3.3中使用一个旧的库(发布于2003年!)。当我导入它时,Python会因源文件中有<>
符号而抛出错误,例如:
if (cnum < 1000 and nnum <> 1000 and ntext[-1] <> "s":
...
我猜这是一种现在已废弃的语言符号。
它确切地表示什么意思,以及我应该用哪个(较新的)符号来代替它?
我想在Python 3.3中使用一个旧的库(发布于2003年!)。当我导入它时,Python会因源文件中有<>
符号而抛出错误,例如:
if (cnum < 1000 and nnum <> 1000 and ntext[-1] <> "s":
...
我猜这是一种现在已废弃的语言符号。
它确切地表示什么意思,以及我应该用哪个(较新的)符号来代替它?
这指的是不等于。 它来自于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
__future__
导入并不是在 Python3 中“把它拿回来”。它实际上是替换了 !=
。在进行该导入后,表达式 1 != 2
将会引发 SyntaxError
。 - Bakuriu它表示不相等,但是它已经被废弃了,请使用!=
代替。
值得注意的是,您可以使用Python本身查找文档,甚至针对谷歌无法处理的标点符号操作符。
>>> help("<>")
比较操作
与 C 不同,Python 中的所有比较操作具有相同的优先级,低于任何算术、移位或按位操作。此外,与 C 不同,表达式如
a < b < c
的解释在数学上是常规的:比较运算产生布尔值:
True
或False
。比较可以任意链接,例如,
x < y <= z
相当于x < y and y <= z
,只不过在这两种情况下仅评估y
一次(但在x <y
被发现为假时,z
都不会被评估)。形式为
<>
和!=
是等效的。为了与 C 保持一致,推荐使用!=
;在下文提到!=
时,也可以接受<>
。拼写形式<>
被认为已经过时。
请参阅http://docs.python.org/2/reference/expressions.html#not-in
<>
运算符本身一样。@TerryA 我在Python 3.8.6中找不到那个文本了。 - Mark Ransom使用 !=
或 <>
。两者都表示不等于。
[参考:Python 语言参考]
比较运算符 <>
和 !=
是同一个运算符的不同拼写方式。!=
是首选拼写方式;<>
已经过时。
!=
也可以写成<>
,但这是一个过时的用法,只为了向后兼容而保留。新代码应始终使用!=
。 - Grijesh Chauhan