1. What is a Decorator?
Decorator ek function hota hai jo doosre function ko modify/add functionality karta hai bina uske code ko directly change kiye.
2. Functions as First-Class Citizens
Python me functions ko variables me assign kar sakte hain aur unhe dusre functions ko pass kar sakte hain.
def greet(name):
return f"Hello, {name}"
say_hello = greet
print(say_hello("AIkiPadhai")) # Hello, AIkiPadhai
3. Simple Decorator Example
def my_decorator(func):
def wrapper():
print("Before function runs")
func()
print("After function runs")
return wrapper
@my_decorator
def say_hello():
print("Hello!")
say_hello()
Output:
Before function runs
Hello!
After function runs
4. Decorator with Arguments
def log_arguments(func):
def wrapper(*args, **kwargs):
print(f"Arguments: {args}, {kwargs}")
return func(*args, **kwargs)
return wrapper
@log_arguments
def add(a, b):
return a + b
print(add(3, 5))
Output:
Arguments: (3, 5), {}
8
5. Real World Example
Decorators ka use logging, authentication, timing aur caching me hota hai.
import time
def timer(func):
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
end = time.time()
print(f"{func.__name__} took {end-start:.4f} seconds")
return result
return wrapper
@timer
def slow_function():
time.sleep(2)
print("Finished!")
slow_function()
Output:
Finished!
slow_function took 2.0003 seconds
Summary
- Decorators ek function ko enhance karte hain.
@decoratorsyntax se apply karte hain.- Arguments handle karne ke liye
*argsaur**kwargsuse karte hain. - Use cases: logging, authentication, timing, caching.