python - color - plotly layout
¿Manera pitónica de verificar si algo existe? (6)
¿Qué hay de la negación?
if not var:
print ''nope it does not''
Aunque esto es para ver si var es falso / ninguno y explotaría si var no está definido.
Para ver si se define var:
try:
var
except NameError:
print ''not defined''
Esta pregunta ya tiene una respuesta aquí:
- ¿Cómo puedo verificar si existe una variable? 10 respuestas
Esto es bastante básico, pero yo estaba codificando y comencé a preguntarme si había una manera pitónica de verificar si algo no existe. Así es como lo hago si es verdad:
var = 1
if var:
print ''it exists''
pero cuando compruebo si algo no existe, a menudo hago algo como esto:
var = 2
if var:
print ''it exists''
else:
print ''nope it does not''
Parece un desperdicio si todo lo que me importa es ¿Hay alguna forma de comprobar si algo no existe sin el otro?
Creo que debes tener cuidado con tu terminología, si algo existe y algo se evalúa como Falso son dos cosas diferentes. Suponiendo que desea lo último, simplemente puede hacer:
if not var:
print ''var is False''
Para el primero, sería el menos elegante:
try:
var
except NameError:
print ''var not defined''
Voy a dar un salto y aventurarme, sin embargo, que lo que sea que te haga desear comprobar si una variable está definida probablemente pueda resolverse de una manera más elegante.
Estilo LBYL, "mira antes de saltar":
var_exists = ''var'' in locals() or ''var'' in globals()
Estilo EAFP, "más fácil pedir perdón que permiso":
try:
var
except NameError:
var_exists = False
else:
var_exists = True
Prefiere el segundo estilo (EAFP) al codificar en Python, porque generalmente es más confiable.
Para verificar si se ha definido una var:
var = 2
try:
varz
except NameError:
print("No varz")
Para verificar si es Ninguno / Falso
if varz is None
...o
if not varz
Si esto es un diccionario, puede tener
mydict[''ggg''] = '''' // doesn''t matter if it is empty value or not.
if mydict.has_key(''ggg''):
print "OH GEESH"
Sin embargo, has_key()
está completamente eliminado de Python 3.x, por lo tanto, la forma de Python es usarla in
''ggg'' in mydict # this is it!
# True if it exists
# False if it doesn''t
Puede usar in
para tuple, list y set también.
Por supuesto, si la variable no ha sido definida, deberá elevar una excepción en silencio (simplemente levante cualquier excepción ... déjela pasar), si la excepción no es lo que desea ver (lo cual es útil para muchas aplicaciones, solo necesita registrar la excepción).
Siempre es seguro definir una variable antes de usarla (se encontrará con "asignación antes de la referencia local", lo que significa que "var no está en el alcance" en inglés). Si hace algo con la consulta, existe la posibilidad de que desee tener un diccionario y verificar si una clave existe o no, usar in
.
if not var:
#Var is None/False/0/
if var:
#Var is other then ''None/False/0''
en Python si varibale tiene algún valor desde None / False / 0, entonces If var
condition fallará ...
y para otros objetos llamará __nonzero__
método __nonzero__
pythonic que puede devolver True
o False
dependiendo de su funcionalidad.