כיצד ליצור ולהשתמש במחוללי Python

Kyzd Lyzwr Wlhstms Bmhwlly Python



בזמן העבודה כמפתח, לעתים קרובות אתה צריך לעבוד עם ערכי נתונים לא משמעותיים רבים. אחסון ערכים אלה גוזל נתח של זיכרון, ומפחית את היעילות של הקוד שלך. עם זאת, ב- Python, אתה יכול להשתמש במחוללים כדי למנוע את ההפסד הזה.

עם גנרטורים, אתה יכול לייצר המוני את הערכים של רצף מסוים מבלי לאחסן אותם לגמרי בזיכרון. יתרה מכך, הפונקציה 'מחולל' יוצרת אובייקט שיוצר ערכים כאשר הוא מחוזר. אז אם אתה רוצה לשים יד על מחוללי Python, המדריך הזה הוא בשבילך. כאן, נסביר כיצד ליצור ולהשתמש במחוללי Python.

כיצד ליצור ולהשתמש במחוללי Python

מחוללי Python משמשים לעבודה על רצפי הנתונים בצורה יעילה, בעיקר כאשר מתמודדים עם מערכי נתונים גדולים או כמעט אינסופיים. היתרונות של מחוללי Python הם:







  1. תַמצִיתִי: אתה יכול להגדיר את המחוללים בקלות בצורה תמציתית אשר משפרת את קריאות הקוד.
  2. יעיל בזיכרון: הם מייצרים ערך בודד בו זמנית אשר צורך פחות זיכרון ומשפר את היעילות.
  3. פונקציות מובנות: ב-Python, למחוללים יש פונקציות מוגדרות מראש כמו next(), iter(), ותשואה כדי להקל על עבודתם.
  4. תכונת השהה והמשך: תוך כדי עבודה על אלגוריתמים מורכבים, אתה יכול להשתמש בפונקציית 'תשואה' כדי להשהות ולחדש את פעולתם של גנרטורים.

אתה יכול ליצור ולהשתמש בגנרטורים בדרכים שונות ב-Python. עוד נחלק את החלק הזה כדי להדגים את יישומו באמצעות דוגמאות שונות. ראשית, בואו נסתכל על התחביר הבסיסי:



def func_name ( ) :
תְשׁוּאָה ביטוי

ה-'def' מגדיר פונקציה, ו-'yield' משמש לבניית הפונקציה 'גנרטור'. עם זאת, שיטה אחרת עוזרת גם ליצור מחולל באמצעות ביטויים של שורה אחת בלבד.



פונקציית מחולל להניב מחרוזת

בואו נגדיר פונקציית מחולל כדי להניב ערך מסוים:





def גֵנֵרָטוֹר ( ) :
תְשׁוּאָה 'זה מחולל'
ל ערך ב גֵנֵרָטוֹר ( ) :
הדפס ( ערך )

כאשר אנו חוזרים על זה באמצעות לולאה 'ל', התוכנה מייצרת את הערכים שצוינו אותם תוכל להדפיס באמצעות הפונקציה 'הדפס'.



פונקציית מחולל להכנת מונה

התוכנית הבאה היא הדוגמה לפונקציית המחולל ליצור רצף של מספרים:

def שלי_מחולל ( נ ) :
דֶלְפֵּק = 0
בזמן דֶלְפֵּק < n:
תְשׁוּאָה דֶלְפֵּק
מונה + = 1
ל דֶלְפֵּק ב שלי_מחולל ( 10 ) :
הדפס ( דֶלְפֵּק )

לדוגמה, אם הקלט הוא 10, תקבל ערכים מ-0 עד 9 עם קומפילציה של קוד זה.

סדרת פיבונאצ'י באמצעות פונקציית הגנרטור

בואו נשתמש כעת בסדרת פיבונאצ'י שהיא הסדרה הבסיסית ביותר בתכנות:

def series_fibonacci ( לְהַגבִּיל ) :
אני , י = 0 , 1
בזמן אני < לְהַגבִּיל:
תְשׁוּאָה אני
אני , י = י , i + j

א = series_fibonacci ( 6 )

הדפס ( הַבָּא ( א ) )
הדפס ( הַבָּא ( א ) )
הדפס ( הַבָּא ( א ) )
הדפס ( הַבָּא ( א ) )
הדפס ( הַבָּא ( א ) )
הדפס ( הַבָּא ( א ) )

נקבל את הסדרה כדלקמן על ידי הפעלת הקוד:

ראשית, צור אובייקט בשם 'a' וקרא לפונקציה 'מחולל' עם הקלט הרצוי כארגומנט.

מילת המפתח next() היא איטרטור ידני. בכל פעם שאנו משתמשים ב-next(a), הוא חוזר על ערך אחד של 'a'. עם זאת, אנו יכולים להשתמש בלולאת 'for' כדי להדפיס את כל הערכים של 'a' בבת אחת כפי שמוצג בדוגמה הבאה:

שימוש בלולאת 'for' במקום הפונקציה next():

def series_fibonacci ( לְהַגבִּיל ) :
אני , י = 0 , 1
בזמן אני < לְהַגבִּיל:
תְשׁוּאָה אני
אני , י = י , i + j

א = series_fibonacci ( 6 )
ל ערך ב א :
הדפס ( ערך )

התוצאה של הפעלת הקוד לא תהיה שונה מכיוון שזו שיטה חלופית לכתיבת התוכנית הקודמת:

מהם ביטויי מחולל ב-Python?

ביטויי מחולל פייתון הם דרך ליצור את פונקציות ה'מחולל' בצורה תמציתית באמצעות ביטויים ליניאריים. הנה התחביר הפשוט:

( ביטוי ל מִשְׁתַנֶה ב ניתן לחזרה אם מַצָב )

לדוגמה, צור ביטוי מחולל כדי לחשב את הריבועים של מספרים אי-זוגיים מ-0 עד 'n' כאשר 'n' הוא ערך הקלט.

ריבועים_אי-זוגיים = ( x * x ל איקס ב טווח ( 10 ) אם איקס % 2 != 0 )
ל ערך ב ריבועים_אי-זוגיים:
הדפס ( ערך )

הקוד הקודם מניב את התוצאה הבאה:

סיכום

זה הכל על השיטות השונות ליצור ולהשתמש במחוללי Python. הסברנו הכל על ביטויי מחולל Python. עליך להשתמש בביטויים אלה אם אתה שוקל להשתמש בגנרטורים בכל אחד מהפרויקטים שלך מכיוון שהם יעילים יותר בכל היבט תכנות.