`<>` 在 Python 中是啥意思?
Posted
技术标签:
【中文标题】`<>` 在 Python 中是啥意思?【英文标题】:What does `<>` mean in Python?`<>` 在 Python 中是什么意思? 【发布时间】:2013-05-20 21:22:05 【问题描述】:我正在尝试在 Python 3.3 中使用一个旧库(从 2003 年开始!)。当我导入它时,Python 会抛出一个错误,因为源文件中有 <>
符号,例如:
if (cnum < 1000 and nnum <> 1000 and ntext[-1] <> "s":
...
我猜这是该语言中现已废弃的标志。
这到底是什么意思,我应该用哪个(更新的)标志来代替它?
【问题讨论】:
我想指出,它显然不是一个 Python 3.3 库,而是一个 Python 2.x 库。!=
can also be written <>
, but this is an obsolete usage kept for backwards compatibility only. New code should always use !=
@GrijeshChauhan 在 3.x 中,这不是真的。正如下面的答案所述,它不仅过时,而且根本不是有效的语法。
让我想起了 ML 中的比较。
【参考方案1】:
意思是不等于。取自ABC
(python的前身)见here:
x < y, x <= y, x >= y, x > y, x = y, x <> y, 0 <= d < 10
顺序测试(
<>
表示'不等于')
我相信 ABC
是从 Pascal 那里得到的,Pascal 是 Guido 开始编程时使用的语言。
它现在已在 Python 3 中删除。请改用 !=
。如果你是CRAZY,你可以废弃!=
,并在Py3K中使用this easter egg只允许<>
:
>>> 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
。
其实这不是历史。这是 4 月 1 日的笑话。见PEP-401。
只是一个相关问题的链接:So what exactly does “from future import barry_as_FLUFL” do?
重要的是(正如 one of the answers 对 Alvin Wong 的链接所指出的那样),__future__
导入仅在 REPL 中“有效”,而不是在脚本中。【参考方案2】:
这意味着不等于,但已弃用,请改用!=
。
【讨论】:
不推荐使用:在 Python 3 中,这是一个语法错误,正如提问者所发现的那样。 为什么有人会为已接受的问题添加-1?请发表评论,这样我可以解决问题,如果有的话.. @PeterVaro 我赞成你的,但总的来说(不是在这种情况下!)如果反对者认为它不好并且接受一个不好的决定(再次,在这种情况下不适用)。 也就是说,我也想知道在这种情况下出现 -1 的原因 - 答案完全有效且正确。 @glglgl 我自己也经历过——有人觉得这个问题不应该被问到,即使答案是正确的,也会惩罚任何留下答案的人。我自己不相信这一点,我保留对实际上不正确或在某种程度上有害的答案投反对票。【参考方案3】:值得了解的是,您可以使用 Python 本身来查找文档,即使是 Google 无法处理的标点符号运算符。
>>> 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
【讨论】:
这也出现在 python 3 中(嗯,对我来说有些不同)。多么奇怪。 +1 这将是一个很好的答案,只是它似乎与<>
运算符本身一样过时。 @TerryA 我在 Python 3.8.6 中找不到该文本。【参考方案4】:
这是一种指定!=
的旧方法,已在 Python 3 中删除。足以使用它的库也可能遇到与 Python 3 的各种其他不兼容问题:它可能是通过2to3 运行它是一个好主意,它会自动更改这一点,等等。
【讨论】:
【参考方案5】:使用!=
或<>
。两者都代表不相等。
[参考:Python 语言参考]
比较运算符<>
和!=
是同一运算符的替代拼写。 !=
是首选拼写; <>
已过时。
【讨论】:
以上是关于`<>` 在 Python 中是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
“Box<Fn() + Send + 'static>” 在 rust 中是啥意思?