Mastering Python Decorators: Enhancing Functions

What are Python Decorators?

Decorators are special functions in Python that modify or enhance other functions without changing their actual code. They wrap another function to extend its behavior in a clean and readable way.

Why Use Decorators?

  • Code Reusability: Apply the same enhancement to multiple functions without repeating code.
  • Separation of Concerns: Keep core functionality separate from auxiliary features like logging or access control.
  • Improved Readability: Make code more organized and easier to understand.

How to Use Decorators?

Creating a Simple Decorator

Let’s create a decorator that adds Filipino greetings before and after a function executes.

def filipino_greeting_decorator(func):
    def wrapper():
        print("Mabuhay! Starting the function...")
        func()
        print("Salamat! Function completed.")
    return wrapper

@filipino_greeting_decorator
def celebrate_festival():
    print("Nagpupugay sa Pasko at mga Pista!")

celebrate_festival()

"""
Expected Output: 

Mabuhay! Starting the function...
Nagpupugay sa Pasko at mga Pista!
Salamat! Function completed.
"""

Decorator with Arguments using enumerate

Enhance a function that schedules festival events by logging each event with its number.

def event_logger_decorator(func):
    def wrapper(festival, events):
        print(f"Scheduling events for {festival}:")
        func(festival, events)
    return wrapper

@event_logger_decorator
def schedule_events(festival, events):
    for idx, event in enumerate(events, start=1):
        print(f"{idx}. {event}")

festival_events = ["Street Dancing", "Parade", "Cultural Show", "Fireworks"]
schedule_events("Sinulog", festival_events)

"""
Expected Output:

Scheduling events for Sinulog:
1. Street Dancing
2. Parade
3. Cultural Show
4. Fireworks
"""

Scroll to Top