Optimización de flujos de trabajo de Python subterráneos

PythonBeginner
Practicar Ahora

Introducción

Bienvenido a la bulliciosa comunidad subterránea de "Subterra", una ciudad futurista donde mentes brillantes trabajan por debajo de la superficie de la Tierra. En este refugio subterráneo, las innovaciones en tecnología y ciencia florecen sin las limitaciones de las sociedades tradicionales de la superficie. Tú juegas el papel de un científico en ascenso, conocido por tu capacidad para crear un código poderoso que impulsa el progreso de la comunidad.

Tu objetivo es diseñar una serie de decoradores de Python que permitan a tus compañeros científicos medir, mejorar y encapsular la funcionalidad en sus experimentos y aplicaciones. Estos decoradores serán esenciales para optimizar el uso de recursos, asegurar los protocolos y rastrear los resultados experimentales. Tu trabajo aquí simplificará el flujo de trabajo de Subterra, teniendo un impacto significativo en el futuro de la exploración y desarrollo subterráneos.

Comprendiendo los Decoradores

En este paso, se te presentará el concepto de decoradores de Python. Los decoradores son una característica única de Python que te permite modificar el comportamiento de funciones o métodos.

Abre un archivo de Python para definir tu primer decorador:

Nombre de archivo: ~/project/decorator.py

def my_decorator(func):
    def wrapper():
        print("Algo está sucediendo antes de que se llame a la función.")
        func()
        print("Algo está sucediendo después de que se llame a la función.")
    return wrapper

@my_decorator
def say_hello():
    print("¡Hola!")

## Prueba la función decorada
say_hello()

En este ejemplo, my_decorator es una función que toma otra función func como entrada y define una función anidada wrapper que agrega un comportamiento adicional antes y después de llamar a func. La sintaxis @my_decorator aplica el decorador a la función say_hello.

Ejecuta el código en el archivo y observa la salida:

$ python3 ~/project/decorator.py
Algo está sucediendo antes de que se llame a la función.
¡Hola!
Algo está sucediendo después de que se llame a la función.

Mejorando los Decoradores

Ahora que entiendes los conceptos básicos, vamos a mejorar tus decoradores. Crearás un decorador que no solo envuelva una función, sino que también tome argumentos.

En el mismo archivo, define el siguiente decorador:

def do_twice(func):
    def wrapper_do_twice(*args, **kwargs):
        func(*args, **kwargs)
        func(*args, **kwargs)
    return wrapper_do_twice

@do_twice
def greet(name):
    print(f"¡Hola {name}!")

## Prueba la función decorada
greet("Mundo")

Este decorador ejecutará la función decorada dos veces. Presta atención al uso de *args y **kwargs para permitir que el envoltorio (wrapper) acepte cualquier número de argumentos posicionales y de palabras clave.

Ejecuta el código en el archivo y observa la salida:

$ python3 ~/project/decorator.py
¡Hola Mundo!
¡Hola Mundo!

Resumen

En este laboratorio, se te guió a través del proceso de comprender e implementar decoradores de Python. Aprendiste a crear decoradores simples, a aceptar argumentos de función dentro de los decoradores y a aplicarlos para modificar el comportamiento de sus funciones. Los decoradores son una característica poderosa de Python que permite mejoras de código limpias y reutilizables.

Al final de este laboratorio, deberías sentirte cómodo creando y usando decoradores y reconocer su potencial en aplicaciones del mundo real.