logo

מחרוזת F ב-Python

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

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

עיצוב מחרוזת ישנה ב- Python

ישנן שתי דרכים עיקריות לעיצוב המחרוזת: % - עיצוב ו str.format(). אבל לשתי השיטות יש כמה מגבלות. הבה קבל הקדמה קצרה של השיטות הנתונות הללו.

1.% - עיצוב

זוהי דרך מסורתית לעצב את המחרוזת, אך המסמכים ממליצים על שיטה זו, המכילה את ההצהרה הבאה.

'פעולות העיצוב המתוארות כאן מציגות מגוון מוזרויות שמובילות למספר שגיאות נפוצות (כגון אי הצגת טופלים ומילונים בצורה נכונה).

שימוש במילולי המחרוזת החדשים יותר או ב- str.format() ממשק עוזר למנוע שגיאות אלה.' - תיעוד רשמי .

כיצד להשתמש ב-% - עיצוב

אנו יכולים לבצע פעולה מובנית באמצעות ה-%-operator. בואו נבין את הדוגמה הבאה.

לדלג על רשימה
 student = 'Michel' 'Hello, %s.' % student 

תְפוּקָה:

 Hello Michel 

אנחנו יכולים גם להשתמש ב-tuple כדי לאחסן את המשתנים המרובים. בואו נראה את הדוגמה הבאה.

 name = 'Sharma' age = 24 'Hello, %s. You are %s.' % (name, age) 

תְפוּקָה:

 Hello Sharma You are 24. 

מדוע %-פורמט אינו מומלץ

מכיוון שככל שהמשתנה גדל ומחרוזת ארוכה יותר, הקוד שלנו הופך להיות הרבה פחות קריא. הקוד נראה מבולגן. בואו נראה את הדוגמה הבאה.

דוגמא -

 first_name = 'Steve' last_name = 'Rogers' age = 70 profession = 'Superhero' group = 'Marvel? print(''Hello, %s %s. Your age is %s. You are a %s. You were a member of %s.' %(first_name, last_name, age, profession)') 

תְפוּקָה:

 Hello, Steve Rogers. Your age is 70. You are a Superhero. You were a member of Marvel. 

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

שיטת 2.str.format()‎

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

כיצד להשתמש ב-str.format()

זהו שיפור ב-%-פורמט. זה כמו פונקציה מובנית רגילה שנקראת על האובייקט והאובייקט הזה המומר למחרוזת.

בואו נראה את הדוגמה הבאה.

דוגמא -

 first_name = 'Mathew' last_name = 'Zukerburg' age = 45 print('Hello, {}. You are {}.'.format(name, age)') 

כדי לגשת לאלמנט המילון בתוך שיטת הפורמט, נוכל להעביר את המפתח בשיטת format() .

 person = {'name': 'Peter', 'age': 17} 'Hello, {name}. You are {age}.'.format(name=person['name'], age=person['age']) 

תְפוּקָה:

 Hello Peter, You are 17 

מדוע השיטה str.format() אינה מומלצת?

ה-str.format() יעיל בהרבה משיטת %-format אך הוא עדיין יכול להיות די מילולי כאשר אנו עוסקים בפרמטרים המרובים.

שיטת F-string

זהו מנגנון עיצוב מחרוזות חדש שהוצג על ידי PEP 498. הוא ידוע גם בשם אינטרפולציית מחרוזת ליטרלית או יותר נפוץ כמחרוזות F (תו f לפני המחרוזת מילולית). המיקוד העיקרי של מנגנון זה הוא להקל על האינטרפולציה.

כאשר אנו מקדים את המחרוזת באות 'F, המחרוזת הופכת למחרוזת ה-f עצמה. ניתן לעצב את מחרוזת ה-f בדומה ל- str.format() שיטה. מחרוזת ה-F מציעה דרך נוחה להטמיע ביטוי Python בתוך מילוליות של מחרוזת לעיצוב.

דוגמא -

 # Python3 program introducing f-string val = 'Geeks' print(f'{val}for{val} is a portal for {val}.') name = 'Tushar' age = 23 print(f'Hello, My name is {name} and I'm {age} years old.') 

תְפוּקָה:

 Hello, My name is Tushar and I'm 28 years old. 

בקוד לעיל, השתמשנו במחרוזת f כדי לעצב את המחרוזת. זה מבצע הערכה בזמן ריצה; אנחנו יכולים לשים את כל ביטויי Python החוקיים בהם.

אנחנו יכולים להשתמש בו בהצהרה אחת.

 print(f'{2 * 30})' 

תְפוּקָה:

אפליקציות נסתרות
 60 

עם זאת, נוכל להשתמש בפונקציה.

 def upercase(input): return input.uper() name = 'Sachin Tendulkar' f'{upercase(name)} is great.' 

תְפוּקָה:

 Sachin Tendulkar is great 

ניתן להשתמש במחרוזת f גם עם אובייקט המחלקה. בואו נבין את הדוגמה הבאה.

דוגמא -

 class Actor: def __init__(self, first_name, last_name, movie): self.first_name = first_name self.last_name = last_name self.movie = movie def __str__(self): return f'{self.first_name} {self.last_name}'s superhit movie is {self.movie}.' def __repr__(self): return f'{self.first_name} {self.last_name} {self.movie}. Superhi!' ac = Actor('Keenu', 'Reevs', 'Matrix') print(f'{ac}') 

תְפוּקָה:

 Keenu Reevs's superhit movie is Matrix. 

הסבר -

בקוד שלמעלה, השתמשנו ב-__str__() וב-__repr__(), המייצגים אובייקט כמחרוזת. אז אנחנו צריכים לכלול לפחות אחת מהשיטות האלה בהגדרת המחלקה. המחרוזת f תשתמש בשיטת __str__() ; אנו יכולים גם להשתמש ב-__repr__() על ידי הכללת דגל ההמרה ! ר.

 print(f'{ac}') print(f'{ac}'!r) 

תְפוּקָה:

 Keenu Reevs's superhit movie is Matrix. Keenu Reevs Matrix Superhit 

מחרוזת F במילון

עלינו לדאוג בזמן העבודה עם מפתחות מילון בתוך מחרוזת ה-f. יש ציטוט שונה לשימוש במפתחות מילון ובמחרוזת f. בואו נבין את הדוגמה הבאה.

דוגמא -

 detail = {'name': 'John', 'age': 19} print(f'{detail['name']} is {detail['age']} years old.') 

תְפוּקָה:

 John is 19 years old. 

השיטה למטה אינה מותרת במקרה של מילון.

דוגמא -

 detail = {'name': 'John', 'age': 19} print(f'{detail['name']} is {detail['age']} years old.') 

תְפוּקָה:

 File '', line 2 print(f'{detail['name']} is {detail['age']} years old.') ^ SyntaxError: invalid syntax 

כפי שאנו יכולים לראות בקוד לעיל, אנו משנים מרכאות כפולות למרכאות בודדות, והיא גרמה לשגיאה.

מְהִירוּת

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

בוא נראה את השוואת המחרוזות הבאה.

דוגמה - 1:

 import timeit print(timeit.timeit('''name = 'Sachin' age = 74 '%s is %s.' % (name, age)''', number = 10000)) 

תְפוּקָה:

 0.0022497819736599922 

דוגמה - 2:

 import timeit print(timeit.timeit('''name = 'Mathew' age = 40 '{} is {}.'.format(name, age)''', number = 10000)) 

תְפוּקָה:

 0.0025783719611354172 

דוגמה - 3:

 import timeit print(timeit.timeit('''name = 'Rockey' age = 74 f'{name} is {age}.'''', number = 10000)) 

תְפוּקָה:

הוסף במערך java
 0.0019360429723747075 

כפי שאנו יכולים לראות, מחרוזת ה-f נמצאת בראש הרשימה.

פלטה

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

דוגמא -

 f'{{70 + 40}}' 

תְפוּקָה:

 {70 + 40} 

אם נשתמש בפלטה המשולשת, זה יציג פלטה בודדת במחרוזת שלנו. בואו נבין את הדוגמה הבאה.

דוגמא -

 f'{{{90 + 4}}}' 

תְפוּקָה:

תאריך javascript
 {94} 

נוכל להציג את יותר הפלטה אם נשתמש ביותר מפלטה משולשת.

דוגמא -

 f'{{{{70 + 4}}}}' 

תְפוּקָה:

 {{70 + 4}} 

קווים אחוריים

אנו יכולים להשתמש בפתיח האחורי בחלק המחרוזת של מחרוזת f. עם זאת, איננו יכולים להשתמש בהטות אחוריות כדי לברוח בחלק הביטוי של מחרוזת f. בואו נבין את הדוגמה הבאה.

דוגמא -

 f'{'Medric Pacalo'}' File '', line 1 f'{'Medric Pacalo'}' 

תְפוּקָה:

 SyntaxError: f-string expression part cannot include a backslash 

הערות מוטבעות

לא נוכל לכלול את הסמל # בביטוי. זה יזרוק שגיאת תחביר. בואו נבין את הדוגמה הבאה.

דוגמא -

 f'Tony is {10 * 73 #Hate this!}.' f'Tonyr is {2 * 37 #Hate this!}.' 

תְפוּקָה:

 SyntaxError: f-string expression part cannot include '#' 

סיכום

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