مشخصات مقاله
-
691
-
0.0
-
2508
-
0
-
0
آموزش مولد ها (generator) در پایتون
آموزش مولد ها (generator) در زبان Python
مولدها یک ابزار ساده و قدرتمند برای ساخت تکرار شونده ها هستند. آنها مانند توابع عادی نوشته می شوند، اما زمانی که بخواهند داده ای را باز گردانند، از عبارت yield استفاده می کنند. هر بار که next() روی آن صدا زده می شود، مولد از جایی که متوقف شده بود، ادامه می دهد (مولد همه مقادیر داده و آخرین عبارت اجرا شده را به خاطر می سپارد). مثال زیر نشان می دهد که ساخت مولدها بسیار ساده است.
def reverse(data):
for index in range(len(data)-1, -1, -1):
yield data[index]
>>> for char in reverse('golf'):
... print(char)
...
f
l
o
g
هر آنچه که بتوان با مولد ها ساخت، با تکرار شونده های مبتنی بر کلاس که در بخش قبل توضیح داده شد نیز می توان ساخت. چیزی که مولد ها را مختصر و جمع و جور کرده است این است که متدهای __iter__() و __next__() به صورت خودکار ساخته می شوند.
ویژگی کلیدی دیگر این است که متغیرهای محلی و حالت اجرا به صورت خودکار بین فراخوانی ها ذخیره می شود. همین باعث شده است تا نوشتن تابع آسان تر شود و نیز نسبت به زمانی که از متغیرهای نمونه مانند self.index و self.data استفاده می شد، بسیار واضح تر شود.
علاوه بر ساخت خودکار متد و ذخیره خودکار حالت برنامه، زمانی که یک مولد خاتمه می یابد، به طور خودکار StopIteration را اعلام می کنند. با ترکیب همه این ویژگی ها، ساخت تکرار شونده ها به سادگی نوشتن یک تابع عادی خواهد بود.