کلمه کلیدی yield در پایتون چه کاری انجام میدهد؟
what does the yield keyword-do in python?
سلام.
کلمه کلیدی 'yield' در پایتون چه کاری انجام میده؟
سلام! کلمه کلیدی yield در پایتون برای ایجاد ژنراتورها (Generators) استفاده میشه. ژنراتورها یک نوع خاص از توابع هستند که به شما اجازه میدهند تا از یک تابع مقداری رو بازگردونید و بعد از اون، تابع به حالت قبلیش برگرده و ادامه بده.
به جای اینکه مثل return از تابع به طور کامل خارج بشه، yield وضعیت تابع رو ذخیره میکنه و دفعه بعد که تابع فراخوانی شد، از همون جایی که قطع شده بود ادامه میده.
این روش برای کار با دنبالههای بزرگ دادهها بسیار مفیده، چون شما میتونید دادهها رو به صورت تدریجی پردازش کنید بدون اینکه نیاز باشه همه اونها رو یکجا در حافظه نگه دارید.
یه مثال ساده بزنیم:
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 یک ژنراتور هست که اعداد از ۱ تا max رو تولید میکنه. هر بار که از yield استفاده میشه، تابع متوقف میشه و عدد فعلی رو بازمیگردونه. بعد از هر بار فراخوانی بعدی، ادامه تابع از بعد از yield شروع میشه.
مزیت استفاده از yield اینه که میتونید با دادههای بزرگی کار کنید بدون اینکه نیاز به حافظه زیادی داشته باشید، چون دادهها به صورت تکتک تولید میشن.