Python7 min read

Python Decorators

Enhance functions using decorators.

Michael Brown
December 18, 2025
0.0k0

Add functionality to functions.

Basic Decorator

```python def uppercase_decorator(func): def wrapper(): result = func() return result.upper() return wrapper

@uppercase_decorator def greet(): return "hello from boston"

print(greet()) # HELLO FROM BOSTON ```

Decorator with Arguments

```python def repeat(times): def decorator(func): def wrapper(*args, **kwargs): for _ in range(times): func(*args, **kwargs) return wrapper return decorator

@repeat(3) def say_hi(name): print(f"Hi {name}!")

say_hi("Tom") # Hi Tom! # Hi Tom! # Hi Tom! ```

Timing Decorator

```python import time

def timer(func): def wrapper(*args, **kwargs): start = time.time() result = func(*args, **kwargs) end = time.time() print(f"Time: {end - start:.4f}s") return result return wrapper

@timer def slow_function(): time.sleep(1) print("Done!")

slow_function() # Done! # Time: 1.0023s ```

Login Required Decorator

```python def login_required(func): def wrapper(user): if user.get("logged_in"): return func(user) else: print("Please login first!") return wrapper

@login_required def view_profile(user): print(f"Welcome {user['name']}!")

user = {"name": "Alice", "logged_in": True} view_profile(user) # Welcome Alice! ```

Remember

- Decorators modify function behavior - Use @decorator_name syntax - *args, **kwargs for flexibility

#Python#Intermediate#Decorators