2012-05-11 25 views
16

Zastanawiam się, czy python ma żadnej funkcji takich jak php funkcja pusta (http://php.net/manual/en/function.empty.php), który sprawdzić, czy zmienna jest pusta z następującymi kryteriamiJak sprawdzić, czy zmienna jest pusta w 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

Dlaczego pytasz? –

Odpowiedz

18

Tak, bool. To nie jest dokładnie taka sama - '0' jest True, ale None, False, [], 0, 0.0 i "" są wszystkie False.

bool jest używany domyślnie po ocenić obiekt w stanie niczym if lub while oświadczenia, wyrażenia warunkowego lub z operatora logicznego.

Jeśli chciał obsłużyć ciągi zawierające numery podobnie jak PHP, można zrobić coś takiego:

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

patrz punkt 5.1:

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

Każdy obiekt może być testowany na wartość prawdy, do stosowania w if lub gdy stan lub jako operand operacji logicznych poniżej. Poniższe wartości uznaje fałszywa

None

False

zero dowolnego typu liczbowa, na przykład 0, 0L, 0.0, 0j.

dowolna pusta sekwencja, na przykład '', (), [].

każde puste odwzorowanie, na przykład {}.

wystąpień zdefiniowanych przez użytkownika klas, jeśli klasa definiuje metodę __nonzero__() lub __len__(), gdy ta metoda zwraca liczbę całkowitą zero lub wartość boolową False. [1]

Wszystkie inne wartości są uważane za prawdziwe - więc obiekty wielu typów są zawsze prawdziwe.

Operacje i wbudowane funkcje, które mają logiczny wynik zawsze powrócić 0 lub False za fałszywe i 1 lub True za prawdziwe, o ile nie zaznaczono inaczej. (Ważny wyjątek: operacji logicznych or i and zawsze zwraca jeden z ich argumentami.)

+0

To nie całkiem odpowiada na jego pytanie: "Zastanawiam się, czy python ma jakąś funkcję, taką jak php pusta funkcja". To mówi mu, co jest "puste" _ ale nie jak się dowiedzieć, czy dowolny obiekt jest pusty, czy nie. – agf

+0

Przypuszczam, że moja odpowiedź sugeruje, że istnieje cała sekcja dokumentacji wyjaśniająca, co jest "puste" *. Powiedziałbym, że pomiędzy 3 odpowiedziami na to pytanie wyczerpaliśmy większość przypadków użycia. – jgritty

16

Zobacz także tej poprzedniej odpowiedzi, która rekomenduje not słowa kluczowego

How to check if a list is empty in Python?

To uogólnia do więcej niż tylko list:

>>> 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 

Warto zauważyć, że nie będzie działał na "0" jako łańcuch, ponieważ łańcuch w rzeczywistości zawiera coś - znak zawierający "0". Do tego trzeba przekonwertować go do int:

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

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

'not' nie jest poleceniem, ale słowem kluczowym. Nie jest to również funkcja, więc nie potrzebujesz (i nie powinieneś) używać nawiasów. 'not' również niejawnie przekształca się w bool, a następnie odwraca; nie zawsze chcesz się odwrócić, aby uzyskać wartość boolowską. – agf

+0

Dzięki @agf. Poprawiono go w poście. – kitchenette

1

wystarczy użyć not:

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

i dla 0 as string użytku:

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

połączyć je:

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

Python jest o prostocie, więc jest to odpowiedź :)

Powiązane problemy