2012-05-11 83 views
16

我想知道如果蟒具有任何功能,諸如PHP空函數(http://php.net/manual/en/function.empty.php),其檢查是否變量爲空用以下標準如何檢查python中的變量是否爲空?

"" (an empty string) 
0 (0 as an integer) 
0.0 (0 as a float) 
"0" (0 as a string) 
NULL 
FALSE 
array() (an empty array) 
+0

你爲什麼問? –

回答

18

是,bool。它不完全一樣 - '0'True,但是None,False,[],0,0.0""都是False

bool當你像一個ifwhile語句,條件表達式,或者用布爾運算符條件評估對象隱式地使用。

如果你想處理包含數字作爲PHP做,你可以做類似的字符串:

def empty(value): 
    try: 
     value = float(value) 
    except ValueError: 
     pass 
    return bool(value) 
4

見第5.1節:

http://docs.python.org/library/stdtypes.html

任何對象都可以用於真值進行測試,用於在使用中,如果一個或while條件或如下的布爾運算的操作數。下面的值被認爲是假:

None

False

任何數值類型的零,例如,00L0.00j

任何空序列,例如'',(),[]

任何空映射,例如,{}

用戶定義類的實例,如果該類定義了__nonzero__()__len__()方法,則該方法返回整數零或布爾值False。 [1]

所有其他值都被認爲是真的 - 因此許多類型的對象總是如此。

操作和內置功能有一個布爾結果總是返回0False假,1True真正的,除非另有說明。 (重要的例外:布爾運算orand總是返回它們的一個操作數。)

+0

這並不完全回答他的問題,「我想知道如果python有任何功能,如PHP空功能」。這告訴他_什麼是「空」_但不知道如何找出任意對象是否爲空。 – agf

+0

我想我的答案暗示有一整段文檔解釋*什麼是「空」*。我想在這個問題的3個答案中,我們已經用盡了大部分用例。 – jgritty

16

參見本以前的答案,建議not關鍵字

How to check if a list is empty in Python?

它概括不僅僅是列表:

>>> a = "" 
>>> not a 
True 

>>> a = [] 
>>> not a 
True 

>>> a = 0 
>>> not a 
True 

>>> a = 0.0 
>>> not a 
True 

>>> a = numpy.array([]) 
>>> not a 
True 

值得注意的是,它不會用作字符串「0」,因爲字符串確實包含某些內容 - 包含「0」的字符。對於你必須把它轉換爲int:

>>> a = "0" 
>>> not a 
False 

>>> a = '0' 
>>> not int(a) 
True 
+1

'not'不是一個命令,而是一個關鍵字。它也不是一個函數,所以你不需要(也不應該使用)括號。 「不」也隱式轉換爲布爾然後反轉;你並不總是想反轉只是爲了得到一個布爾值。 – agf

+0

謝謝@agf。在帖子中更正了它。 – kitchenette

1

只需使用not

if not your_variable: 
    print("your_variable is empty") 

,併爲您的0 as string使用:

if your_variable == "0": 
    print("your_variable is 0 (string)") 

將它們組合起來:

if not your_variable or your_variable == "0": 
    print("your_variable is empty") 

Python是關於簡單性,所以這個答案:)

相關問題