2014-05-07 119 views
0

爲什麼這兩個評估不同?爲什麼空字符串和None的評估方式不同?

In [34]: a = '' 

In [35]: if a or a >=0: 
    print 'y' 
    ....:  
y 

In [36]: a = None 

In [37]: if a or a >=0: 
    print 'y' 
    ....:  

我以爲一個空字符串也評估爲無(我知道他們是不一樣的)?或者它只是虛僞,因此評估爲0(如果像if a: do something那樣進行測試,則評估爲無)?

+1

我錯過了,你會感到困惑。在第一個例子中?由於'> = 0'部分,它打印'y'。 – keyser

+0

我不期待第一個例子打印任何東西。 – LarsVegas

+0

這是因爲字符串vs int比較的工作原理。如果a部分沒有被踢入,就像你說的那樣,一個空字符串和'None'不是一回事。 – keyser

回答

0

這是因爲在CPython的intstring

前來自docs

CPython implementation detail: Objects of different types except numbers are ordered by their type names; objects of the same types that don’t support proper comparison are ordered by their address.

這樣:

>>> '1' > 1 
True 
相關問題