Python3
200 subscribers
100 photos
6 videos
26 files
518 links
🎓 آموزش و پروژه‌های Python
آموزش‌های کاربردی و پروژه‌های عملی Python برای همه سطوح. 🚀
Download Telegram
📚 دوره آموزش پایتون از 0 تا 100

پارت ۱۷: Decorators و Generators 🚀

در این پارت با دو مفهوم پیشرفته در پایتون یعنی Decorators و Generators آشنا می‌شویم. این دو ابزار به شما کمک می‌کنند تا کدهای خوانا‌تر، ماژولارتر و بهینه‌تری بنویسید.

۱. Decorators 🎨
Decorators یکی از ویژگی‌های قدرتمند پایتون است که به شما اجازه می‌دهد تا رفتار توابع یا کلاس‌ها را بدون تغییر در کد اصلی آن‌ها، اصلاح کنید.

۱.۱. تعریف یک Decorator
یک decorator در واقع یک تابع است که یک تابع دیگر را به عنوان ورودی می‌گیرد و یک تابع جدید را برمی‌گرداند.

def my_decorator(func):
def wrapper():
print("Something is happening before the function is called.")
func()
print("Something is happening after the function is called.")
return wrapper

@my_decorator
def say_hello():
print("Hello!")

say_hello()

در این مثال:
- my_decorator یک decorator است که تابع say_hello را تزئین می‌کند.
- @my_decorator قبل از تعریف say_hello باعث می‌شود که say_hello به صورت خودکار با my_decorator تزئین شود.

۱.۲. Decorators با آرگومان‌ها

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

@repeat(3)
def greet(name):
print(f"Hello, {name}!")

greet("Alice")

در این مثال:
- repeat یک decorator با آرگومان است که تابع greet را ۳ بار اجرا می‌کند.

۲. Generators 🔄
Generators به شما اجازه می‌دهند تا به راحتی iteratorهای خود را تعریف کنید. آن‌ها به جای برگرداندن یک لیست کامل، یک به یک مقادیر را تولید می‌کنند که باعث بهینه‌تر شدن حافظه می‌شود.

۲.۱. تعریف یک Generator

def count_up_to(max):
count = 1
while count <= max:
yield count
count += 1

counter = count_up_to(5)
for num in counter:
print(num)

در این مثال:
- count_up_to یک generator است که از ۱ تا max را تولید می‌کند.
- yield به جای return استفاده شده است که مقادیر را یکی یکی تولید می‌کند.

۲.۲. Generators با تابع next()

def simple_gen():
yield 1
yield 2
yield 3

gen = simple_gen()
print(next(gen)) # 1
print(next(gen)) # 2
print(next(gen)) # 3

در این مثال:
- simple_gen یک generator ساده است که مقادیر ۱، ۲ و ۳ را تولید می‌کند.
- با استفاده از next() می‌توان مقادیر بعدی را از generator دریافت کرد.


نکات مهم
- Decoratorها: برای تزئین توابع و تغییر رفتار آن‌ها بدون تغییر در کد اصلی استفاده می‌شوند. آن‌ها می‌توانند به توابعی با آرگومان‌های مختلف اعمال شوند.
- Generatorها: برای ایجاد iteratorهای کارآمد و بهینه استفاده می‌شوند. آن‌ها مقادیر را به صورت lazy evaluation تولید می‌کنند که باعث کاهش استفاده از حافظه می‌شود.

این دو مفهوم به شما کمک می‌کنند تا کدهای پیچیده‌تر و بهینه‌تری در پایتون بنویسید. امیدوارم این آموزش برای شما مفید بوده باشد! 🌟

🔻برای دیدن آموزش های مفید بیشتر اینجا کلیک کن

#پایتون #آموزش_پایتون #Decorators #Generators #PythonAdvanced #PythonProgramming
👍5