在Python中,"<>"是什么意思?

mic*_*yer 53 python syntax operators python-2.x

我正在尝试在Python 3.3中使用一个旧库(可追溯到2003年!).当我导入它时,Python会抛出一个错误,因为<>源文件中有迹象,例如:

if (cnum < 1000 and nnum <> 1000 and ntext[-1] <> "s":
    ...
Run Code Online (Sandbox Code Playgroud)

我想这是一个现在被遗弃的语言标志.

究竟是什么意思,我应该用哪个(更近期的)标志替换它?

jam*_*lak 97

这意味着不等于.它取自ABC(python的前身),见这里:

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

订单测试(<>意味着'不等于')

我相信ABC从Pascal开始,这是Guido开始编程的语言.

现在已经在Python 3中删除了它.请!=改用它.如果你疯了,你可以废弃!=,只允许<>使用这个复活节彩蛋在Py3K :

>>> from __future__ import barry_as_FLUFL
>>> 1 <> 2
True
Run Code Online (Sandbox Code Playgroud)

  • `__future__`导入确实*不*"在Python3中取回".它有效*替换*`!=`.执行该导入后,表达式"1!= 2"会引发`SyntaxError`. (8认同)
  • 实际上,这不是历史性的.这是4月1日的笑话.见[PEP-401](http://www.python.org/dev/peps/pep-0401/). (5认同)
  • 只是相关问题的链接:[那么"__future__ import barry_as_FLUFL"到底是做什么的?](http://stackoverflow.com/q/4007289/1386111) (3认同)

Pet*_*aro 42

这意味着NOT EQUAL,但它已弃用,请!=改用.

  • 不仅仅是弃用:在Python 3中,这是一个语法错误,正如提问者所发现的那样. (20认同)
  • 为什么有人会为已接受的问题添加-1?请评论,所以我可以解决问题,如果有任何.. (4认同)
  • 也就是说,我也想知道在这种情况下-1的原因 - 答案是完全有效和正确的. (2认同)

lvc*_*lvc 14

这是一种旧的指定方式,!=已在Python 3中删除.一个足以使用它的库可能会遇到与Python 3的各种其他不兼容性:通过2to3运行它可能是一个好主意,它会自动更改此,还有很多其他的事情.


Col*_*nic 14

值得知道的是,您可以使用Python本身来查找文档,即使对于谷歌无法应对的标点符号运算符也是如此.

>>> help("<>")
Run Code Online (Sandbox Code Playgroud)

比较

与C不同,Python中的所有比较操作都具有相同的优先级,低于任何算术,移位或按位操作的优先级.与C不同,表达式也a < b < c具有数学常规的解释:

比较产生布尔值:TrueFalse.

比较可以任意链接,例如,x < y <= z等同于x < y and y <= z,除了y仅评估一次(但在两种情况下z都没有被评估,当x < y发现是假的时).

形式<>!=等同; 为了与C一致, !=是优选的; !=以下提到的地方<>也被接受.该<>拼写被认为是过时的.

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

  • 这也出现在python 3中(好吧,对我来说不同).多么奇怪.+1 (2认同)