try print exceptions error custom catch all python exception variables

python - print - ¿Cómo verifico si existe una variable?



python try except print error (10)

El uso de variables que no se han definido o establecido (implícita o explícitamente) es casi siempre algo malo en cualquier lenguaje, ya que indica que la lógica del programa no se ha pensado correctamente y es probable que resulte impredecible. comportamiento.

El siguiente truco, que es similar al suyo, garantizará que una variable tenga algún valor antes de usarla:

try: myVar except NameError: myVar = None # Now you''re free to use myVar without Python complaining.

Sin embargo, todavía no creo que sea una buena idea; en mi opinión, debe refactorizar su código para que esta situación no se produzca.

Quiero comprobar si existe una variable. Ahora estoy haciendo algo como esto:

try: myVar except NameError: # Do something.

¿Hay otras formas sin excepciones?


Es solo una adición a las respuestas anteriores para verificar si una clave está presente en JSON / Dict o no en python

''Nombre de objeto Json / Dict''. Has_key (''nombre de clave'')

esto devolverá verdadero o falso


Para comprobar la existencia de una variable local:

if ''myVar'' in locals(): # myVar exists.

Para comprobar la existencia de una variable global:

if ''myVar'' in globals(): # myVar exists.

Para comprobar si un objeto tiene un atributo:

if hasattr(obj, ''attr_name''): # obj.attr_name exists.


Para objetos / módulos, también puedes

''var'' in dir(obj)

Por ejemplo,

>>> class Something(object): ... pass ... >>> c = Something() >>> c.a = 1 >>> ''a'' in dir(c) True >>> ''b'' in dir(c) False


Se llama catch except en Python. Aparte de eso, está bien para casos tan simples. Existe el AttributeError que se puede usar para verificar si un objeto tiene un atributo.


Una forma que a menudo funciona bien para manejar este tipo de situación es no verificar explícitamente si la variable existe, sino simplemente continuar y ajustar el primer uso de la variable posiblemente inexistente en un try / except NameError:

# Search for entry. for x in y: if x == 3: found = x # Work with found entry. try: print(''Found: {0}''.format(found)) except NameError: print(''Not found'') else: # Handle rest of Found case here ...


Una forma simple es inicializarlo al principio diciendo myVar = None

Luego, más tarde:

if myVar is not None: # Do something


Usar try / except es la mejor manera de probar la existencia de una variable. Pero es casi seguro que hay una mejor manera de hacer lo que sea que esté haciendo que configurando / probando variables globales.

Por ejemplo, si desea inicializar una variable de nivel de módulo la primera vez que llama a alguna función, es mejor que utilice un código como el siguiente:

my_variable = None def InitMyVariable(): global my_variable if my_variable is None: my_variable = ...


intente: `

Myvariable = [''v'', ''a'', ''r''] try: print(Myvariable) except Nameerror: print(''variable /"Myvariable/" not found'')

¡espero que esto ayude!


Asumiré que la prueba se utilizará en una función, similar a la respuesta del usuario 97370 . No me gusta esa respuesta porque contamina el espacio de nombres global. Una forma de solucionarlo es usar una clase en su lugar:

class InitMyVariable(object): my_variable = None def __call__(self): if self.my_variable is None: self.my_variable = ...

No me gusta esto, porque complica el código y abre preguntas como, ¿debería esto confirmar con el patrón de programación de Singleton? Afortunadamente, Python ha permitido que las funciones tengan atributos por un tiempo, lo que nos da esta solución simple:

def InitMyVariable(): if InitMyVariable.my_variable is None: InitMyVariable.my_variable = ... InitMyVariable.my_variable = None