2016-01-27 59 views
0

我正在檢討一些代碼,今天看到了我想是一個錯字:爲什麼Python 2將<>視爲有效?它有什麼作用?

if foo <> bar: 
    # do stuff 

不過,我很驚訝地看到,Python2出現治療<>爲有效:

% python -c 'print 1<>2' 
True 

此外,我不能辨別是什麼原因導致<>返回True VS 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的扼流圈對這個 「經營者」(或不管它應該叫):

% python3 -c 'print(1<>2)' 
    File "<string>", line 1 
    print(1<>2) 
      ^
SyntaxError: invalid syntax 

那麼,是什麼原因呢?什麼是<>在做什麼?它是什麼?爲什麼它在Python 3中無效?

+0

@minitoto我的意思是,我特意問了這個問題,因爲我不知道如何谷歌什麼是「<>」運算符,所以我不會認爲這個問題是重複的,我試圖找到它和我的搜索失敗了我。但我想這個答案確實回答了我的問題,現在我知道了答案。 顯然我熟悉'!='運算符 –

+0

沒有冒犯,但我認爲這是羣衆的問題,有些人只是不能谷歌或失敗,並要求重複的問題已經有很好的答案 – tinySandy

+0

我是不確定是否有可能Google這樣的符號。 – Paul

回答

4

這是一種傳統的寫作方式!=。不要在新代碼中使用它。正如你已經看到的那樣,它在python3.x中被刪除了(可能是因爲「應該有一個 - 最好只有一個 - 明顯的方法來做到這一點」,並且因爲沒有人使用過這個操作符:-)。

的文檔可以發現here

的形式<>!=是等價;爲了與C一致,優選!=;其中!=在下面提及<>也被接受。 <>拼寫爲認爲過時

+0

是的,它從mysql中繼承,其中<>表示不等於。 –

+0

呵呵,我專注於搜索'<>'而不是隻看Python比較文檔,所以我錯過了。 –

+0

@UncleIroh:我總是認爲它是從BASIC借來的。 – Dolda2000

相關問題