何时使用`<>`和`!=`运算符?

Jer*_*_TX 1 python comparison-operators python-2.7 python-3.x python-internals

找不到这个.试图比较2个值,但它们不能相等.就我而言,它们可以(通常是)大于或小于.

我应该使用:

if a <> b:
   dostuff
Run Code Online (Sandbox Code Playgroud)

要么

if a != b:
   dostuff
Run Code Online (Sandbox Code Playgroud)

这个页面说它们是相似的,这意味着它们至少有些不同.

the*_*eye 24

引用Python语言参考,

比较运算符<>!=同一运算符的替代拼写.!=是首选的拼写; <>过时了.

所以,它们都是同一个,但是比!=它更受欢迎<>.

我尝试在Python 2.7.8中反汇编代码

from dis import dis
form_1 = compile("'Python' <> 'Python'", "string", 'exec')
form_2 = compile("'Python' != 'Python'", "string", 'exec')
dis(form_1)
dis(form_2)
Run Code Online (Sandbox Code Playgroud)

得到以下内容

  1           0 LOAD_CONST               0 ('Python')
              3 LOAD_CONST               0 ('Python')
              6 COMPARE_OP               3 (!=)
              9 POP_TOP
             10 LOAD_CONST               1 (None)
             13 RETURN_VALUE

  1           0 LOAD_CONST               0 ('Python')
              3 LOAD_CONST               0 ('Python')
              6 COMPARE_OP               3 (!=)
              9 POP_TOP
             10 LOAD_CONST               1 (None)
             13 RETURN_VALUE
Run Code Online (Sandbox Code Playgroud)

两个<>!=正在产生相同的字节代码

              6 COMPARE_OP               3 (!=)
Run Code Online (Sandbox Code Playgroud)

所以他们俩都是同一个人.

注意:

<>根据Python 3语言参考,在Python 3.x中删除.

引用官方文档,

!=也可以编写<>,但这是一个过时的用法,仅用于向后兼容.应始终使用新代码!=.

结论

由于<>在3.x中删除,并且根据文档,!=是首选方式,最好不要使用<>.

  • 这个答案付出了值得称赞的努力.然而简单的答案是永远不要使用`<>` (3认同)