In backend way
99 subscribers
27 photos
8 videos
8 files
16 links
اینجا هیچ چیز خاصی نمیبینی صرفا دارم آموزش هایی که میبینم رو به زبون خودم واسه خودم داکیومنت میکنم شاید به درد تو هم بخوره
Download Telegram
Forwarded from Matin
سوال پایتونی 🔥:
مفهوم 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():
    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)
در این مثال، consumer یک coroutine است که داده‌های دریافتی را چاپ می‌کند. producer یک تابع است که داده‌ها را به coroutine consumer ارسال می‌کند. این نمونه‌کد نشان می‌دهد چگونه می‌توان از coroutines برای ارتباط و مبادله داده‌ها بین دو تابع استفاده کرد.
#python
#generators #coroutines

@programmers_land