Python es un lenguaje de programación de alto nivel y propósito general ampliamente utilizado. Fue desarrollado principalmente para enfatizar la legibilidad del código y su sintaxis permite a los programadores expresar conceptos en menos líneas de código. Python es un lenguaje de programación que le permite trabajar rápidamente e integrar sistemas de manera más eficiente.
La mayoría de la gente no sabe que el bloque Try-Except puede reemplazar if-else (declaraciones condicionales). ¡Sí, has leído bien! Se puede hacer. Podemos usar Try (Manejo de excepciones) en lugar de usar declaraciones condicionales normales.
Aquí hay un ejemplo muy famoso:
Usando If:
if key in mydict: mydict[key] += 1 else: mydict[key] = 1
Usando probar/excepto:
try: mydict[key] += 1 except KeyError: mydict[key] = 1
¡Parece increíble verdad! Pero aquí viene la cosa, ¿Qué bloque de código funciona más rápido?
Se puede medir usando el módulo timeit en python. Se puede ver si se debe usar el bloque Try en lugar de If.
Ejemplo: Comparación de tiempo para la división de 2 números usando try-except y if-else.
A continuación se muestra la implementación.
Python3
import timeit code_snippets =["""\ try: result = 1000 / value except ZeroDivisionError: pass""", """\ if value: result = 1000 / value""", ] for value in (1, 0): for code in code_snippets: t = timeit.Timer(stmt = code, setup ='value ={}'.format(value)) print("----------------------") print("value = {}\n{}".format(value, code)) print("%.2f usec / pass\n" % (1000000 * t.timeit(number = 100000)/100000))
Producción:
---------------------- value = 1 try: result = 1000 / value except ZeroDivisionError: pass 0.04 usec / pass ---------------------- value = 1 if value: result = 1000 / value 0.06 usec / pass ---------------------- value = 0 try: result = 1000 / value except ZeroDivisionError: pass 0.37 usec / pass ---------------------- value = 0 if value: result = 1000 / value 0.01 usec / pass
Ahora se ve claramente que el controlador de excepciones (try/except) es comparativamente más rápido que la condición if explícita hasta que se encuentra con una excepción. Eso significa que si se lanza alguna excepción, el controlador de excepciones tomó más tiempo que si la versión del código. Eso significa que el factor que decide la rapidez del código es el tipo de problema que se está manejando.
A menudo escuchamos que Python siempre fomenta el estilo EAFP («Es más fácil pedir perdón que permiso») sobre el estilo LBYL («Mira antes de saltar») que se usa en la mayoría de los lenguajes como C. Los documentos de Python afirman que:
Es más fácil pedir perdón que permiso. Este estilo de codificación común de Python asume la existencia de claves o atributos válidos y detecta excepciones si la suposición resulta falsa. Este estilo limpio y rápido se caracteriza por la presencia de muchas declaraciones de prueba y excepción. La técnica contrasta con el estilo LBYL común a muchos otros lenguajes como C.
De nuestra evaluación, llegamos a la siguiente conclusión. Consideremos nuestro ejemplo anterior, si esperamos que el 99% de los casos los valores de ‘valor’ no sean iguales a 0, podemos usar el enfoque de prueba/excepto. Será más rápido si la excepción es realmente excepcional. Si la posibilidad de que el valor se convierta en 0 es superior al 50 %, probablemente sea mejor usar ‘si’.
Publicación traducida automáticamente
Artículo escrito por Gokul Gopakumar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA