2012-05-11 380 views
16

Me pregunto si pitón tiene ninguna función como php función vacía (http://php.net/manual/en/function.empty.php), que comprueba si la variable está vacía con criterios siguientes¿Cómo verificar si una variable está vacía en 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

¿Por qué lo preguntas? –

Respuesta

18

Sí, bool. No es exactamente la misma - '0' es True, pero None, False, [], 0, 0.0 y "" son todos False.

bool se utiliza de forma implícita cuando se evalúa un objeto en una condición como una declaración if o while, expresión condicional, o con un operador booleano.

Si quería manejar cadenas que contienen los números como lo hace PHP, usted podría hacer algo como:

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

Véase la sección 5.1:

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

Cualquier objeto puede ser probado para valor de verdad, para uso en un si o mientras condición o como operando de las operaciones booleanas de abajo. Los siguientes valores se consideran falsa:

None

False

cero de cualquier tipo numérico, por ejemplo, 0, 0L, 0.0, 0j.

cualquier secuencia vacía, por ejemplo, '', (), [].

cualquier asignación vacía, por ejemplo, {}.

instancias de clases definidas por el usuario, si la clase define un método __nonzero__() o __len__(), cuando ese método devuelve el número cero o el valor. [1]

Todos los demás valores se consideran verdaderos, por lo que los objetos de muchos tipos siempre son verdaderos.

Operaciones y funciones incorporadas que tienen un resultado booleano siempre vuelven 0 o False por falsa y 1 o True por cierto, a menos que se indique lo contrario. (Excepción importante: las operaciones booleanas or y and siempre devuelven uno de sus operandos)

+0

Esto no responde completamente a su pregunta: "Me pregunto si Python tiene alguna función como php empty function". Esto le dice "qué está" vacío ", pero no cómo saber si un objeto arbitrario está vacío o no. – agf

+0

Supongo que mi respuesta implica que hay una sección completa de la documentación que explica * qué es "vacío" *. Diría que entre las 3 respuestas a esta pregunta, hemos agotado la mayoría de los casos de uso. – jgritty

16

Véase también esta respuesta anterior que recomienda la palabra clave not

How to check if a list is empty in Python?

generaliza a más que solo listas:

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

Notablemente, no funcionará para "0" como una cadena porque la cadena, de hecho, contiene algo, un carácter que contiene "0". Para eso hay que convertirlo a un int:

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

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

'not' no es un comando, sino una palabra clave. Tampoco es una función, por lo que no necesita (y no debe usar) el paréntesis. 'not' también se convierte implícitamente en bool y luego en inversión; no siempre deseas invertir solo para obtener un booleano. – agf

+0

Gracias @agf. Corregido en la publicación. – kitchenette

1

sólo tiene que utilizar not:

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

y para su 0 as string uso:

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

combinarlos:

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

Python es acerca de la simplicidad, esta es la respuesta :)

Cuestiones relacionadas