عملکرد کلیدواژه yield در پایتون

mohsen1 ماه قبل
ارسال شده در
python

در پایتون، کلیدواژه yield برای ایجاد جنراتورها استفاده می‌شود که نوعی از ایتراتورها هستند. کلیدواژه yield به جای برگرداندن یک مقدار و خروج از تابع، تابع را در حالت تعلیق نگه می‌دارد تا کار بعدی به محض فراخوانی مجدد تابع از همان نقطه ادامه یابد. این ویژگی به شما این امکان را می‌دهد که ردیف‌هایی از داده‌ها را به‌ تدریج و در زمان نیاز تولید کنند، به‌جای اینکه تمام داده‌ها را در حافظه ذخیره کنند.

مفهوم جنراتورها و ایتراتورها

جنراتورها به شما این امکان را می‌دهند که به‌سادگی و بدون اشغال حافظه زیاد، لیستی از مقادیر را تولید کنید. برای هر بار که جنراتور مورد استفاده قرار می‌گیرد، تنها یک مقدار تولید می‌شود و سپس تابع در حال تعلیق نگه داشته می‌شود تا در مرتبه بعدی دوباره فراخوانی شود. این کار زمانی که با مجموعه‌های بزرگ داده سر و کار داریم، بسیار مفید خواهد بود.

نحوه کارکرد yield

زمانی که در تابعی از yield استفاده می‌شود، در واقع یک جنراتور ایجاد می‌کند. برای مثال در کد زیر:

      def countdown(self, n):
    while n >= 0:
        yield n
        n -= 1

    

هنگامی که countdown فراخوانی می‌شود، این تابع یک جنراتور تولید می‌کند که در هر بار فراخوانی، یک واحد عدد ورودی را کاهش می دهد و باز می گرداند. برای مثال با اجرای کد زیر:

      for i in test(5):
   print(i)

    

این خروجی را خواهیم داشت:

      5
4
3
2
1
0

    

مزایای استفاده از yield

استفاده از yield بسیار بهینه‌تر از استفاده از لیست‌هاست، زیرا در صرفه‌جویی در حافظه و سرعت در بازیابی داده‌ها کمک می‌کند. به‌عنوان مثال، در حالتی که داده‌ها بی‌نهایت یا بسیار بزرگ باشند، استفاده از yield امکان پردازش آن‌ها را به‌صورت تدریجی فراهم می‌آورد بدون اینکه نیاز باشد تا کل لیست در حافظه ذخیره شود.

به طور خلاصه، yield به ما اجازه می‌دهد تا با ایجاد جنراتورها، از میزان حافظه به‌طور بهینه‌تری استفاده کنیم و کدهای تمیزتر و مؤثرتری بنویسیم.

رای
0
ارسال نظر
مرتب سازی:
اولین نفری باشید که نظر می دهید!