我今天正在审查一些代码,看到我认为是一个错字:
if foo <> bar:
# do stuff
但是,我很惊讶地发现Python2似乎将<>
视为有效:
% python -c 'print 1<>2'
True
此外,我无法辨别<>
返回True
与False
的原因:
In [16]: 1 <> 2
Out[16]: True
In [17]: 2 <> 1
Out[17]: True
In [18]: 1 <> None
Out[18]: True
In [19]: 1 <> "foo"
Out[19]: True
In [20]: None <> 1
Out[20]: True
In [21]: None <> None
Out[21]: False
In [22]: False <> 1
Out[22]: True
我的一个猜测是Python正在使用<
和>
运算符,而我却成了一些布尔铸造恶作剧的受害者,但事实并非如此。 < >
无效,><
In [29]: 1 >< 2
File "<ipython-input-29-0e35e3b94016>", line 1
1 >< 2
^
SyntaxError: invalid syntax
In [30]: 1 < > 2
File "<ipython-input-30-8f2ba3fa3c6c>", line 1
1 < > 2
^
SyntaxError: invalid syntax
最后,Python 3对这个&#34;运算符#34; (或者应该叫它的任何东西):
% python3 -c 'print(1<>2)'
File "<string>", line 1
print(1<>2)
^
SyntaxError: invalid syntax
那么,是什么给出的? <>
在做什么?它是什么?为什么它在Python 3中无效?
答案 0 :(得分:4)
这是一种传统的写作方式!=
。不要在新代码中使用它。正如你已经看到的那样,它已经在python3.x中删除了(可能是因为&#34;应该有一个 - 最好只有一个 - 明显的方式来做它。&#34;因为没有人用过它运营商: - )。
可以找到文档here:
表单
<>
和!=
是等效的;为了与C保持一致,!=
是首选;在!=
下面提到<>
的地方也被接受。<>
拼写被视为过时。