Forwarded from Matin
سوال پایتونی 🔥:
مفهوم Generators و Coroutines در Python را توضیح دهید. یک مثال کاربردی از استفاده از آنها ارائه دهید.
Generators:
در Python توابعی هستند که مقادیر را یکی پس از دیگری تولید میکنند، به جای محاسبه و بازگرداندن یک لیست کامل. این امر منجر به صرفهجویی در حافظه و کارایی بهتر میشود.
Coroutines:
در Python نوعی توابع ویژهای هستند که میتوانند در طول اجرای خود چندین بار متوقف و از سر گرفته شوند. آنها برای انجام عملیاتهای همزمان و غیرمتوالی مانند برنامهنویسی شبکه یا برنامهنویسی رویدادی مفید هستند.
مثال کاربردی: فرض کنید میخواهیم یک تابع بنویسیم که اعداد فیبوناچی را تا یک حد مشخص تولید کند. میتوانیم از یک generator برای این کار استفاده کنیم:
در این مثال، fibonacciGenerator یک generator است که در هر بار فراخوانی، عدد بعدی در دنباله فیبوناچی را تولید میکند. این روش کارآمدتر از محاسبه و ذخیره کل دنباله در یک لیست است.
یک مثال از استفاده از coroutines:
#python
#generators #coroutines
@programmers_land
مفهوم Generators و Coroutines در Python را توضیح دهید. یک مثال کاربردی از استفاده از آنها ارائه دهید.
Generators:
در Python توابعی هستند که مقادیر را یکی پس از دیگری تولید میکنند، به جای محاسبه و بازگرداندن یک لیست کامل. این امر منجر به صرفهجویی در حافظه و کارایی بهتر میشود.
Coroutines:
در Python نوعی توابع ویژهای هستند که میتوانند در طول اجرای خود چندین بار متوقف و از سر گرفته شوند. آنها برای انجام عملیاتهای همزمان و غیرمتوالی مانند برنامهنویسی شبکه یا برنامهنویسی رویدادی مفید هستند.
مثال کاربردی: فرض کنید میخواهیم یک تابع بنویسیم که اعداد فیبوناچی را تا یک حد مشخص تولید کند. میتوانیم از یک generator برای این کار استفاده کنیم:
def fibonacciGenerator(n):
a, b = 0, 1
for _ in range(n):
yield a
a, b = b, a + b
for num in fibonacciGenerator(10):
print(num)
در این مثال، fibonacciGenerator یک generator است که در هر بار فراخوانی، عدد بعدی در دنباله فیبوناچی را تولید میکند. این روش کارآمدتر از محاسبه و ذخیره کل دنباله در یک لیست است.
یک مثال از استفاده از coroutines:
def consumer():در این مثال، consumer یک coroutine است که دادههای دریافتی را چاپ میکند. producer یک تابع است که دادهها را به coroutine consumer ارسال میکند. این نمونهکد نشان میدهد چگونه میتوان از coroutines برای ارتباط و مبادله دادهها بین دو تابع استفاده کرد.
while True:
received = yield
print(f"Received: {received}")
def producer(consumer_coroutine):
consumer = consumer_coroutine
next(consumer) # Advance to the yield keyword
n = 0
while True:
n += 1
print(f"Producing: {n}")
consumer.send(n)
if n == 5:
break
consumer_cor = consumer()
producer(consumer_cor)
#python
#generators #coroutines
@programmers_land