פייתון f-strings – PEP 498 – אינטרפולציית מחרוזת מילולית

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

למה נזקק ל-f-strings?

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

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

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

  • עיצוב מחרוזת() – פונקציית עיצוב מחרוזת של פייתון הוכנסה כדי להתמודד עם בעיות ותכונות מוגבלות של העיצוב באמצעות סימן האחוז ומחרוזות תבנית. אף על פי שזה פותר את הבעיות, זה מדבר יותר מידי. בואו נסתכל על הפרושנות שלו עם דוגמה פשוטה.

    >>> גיל = 4 * 10
    >>> 'הגיל שלי הוא {age}.'.format(age=גיל)
    'הגיל שלי הוא 40.'
    

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

>>> f'My age is {age}'
'My age is 40.'

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

דוגמאות ל־f-strings ב־Python

בואו נסתכל על דוגמה פשוטה של f-strings.

name = 'Pankaj'
age = 34

f_string = f'My Name is {name} and my age is {age}'

print(f_string)
print(F'My Name is {name} and my age is {age}')  # f and F are same

name = 'David'
age = 40

# מחרוזת f כבר נחשבה ולא תשתנה עכשיו
print(f_string)

פלט:

My Name is Pankaj and my age is 34
My Name is Pankaj and my age is 34
My Name is Pankaj and my age is 34

Python מבצעת פקודות אחת אחת ולאחר שבוצעו הביטויים של f-string, הם לא משתנים אפילו אם ערכו של הביטוי משתנה. לכן, בקטעי הקוד לעיל, ערך ה-f_string נשאר זהה גם לאחר שהמשתנים 'name' ו־'age' שונו בחלק האחרון של התוכנית.

1. f-strings עם ביטויים והמרות

אפשר להשתמש ב־f-strings כדי להמיר datetime לפורמט ספציפי. ניתן גם להריץ ביטויים מתמטיים ב־f-strings.

from datetime import datetime

name = 'David'
age = 40
d = datetime.now()

print(f'Age after five years will be {age+5}')  # age = 40
print(f'Name with quotes = {name!r}')  # name = David
print(f'Default Formatted Date = {d}')
print(f'Custom Formatted Date = {d:%m/%d/%Y}')

פלט:

Age after five years will be 45
Name with quotes = 'David'
Default Formatted Date = 2018-10-10 11:47:12.818831
Custom Formatted Date = 10/10/2018

2. f-strings תומכות במחרוזות גולמיות

אפשר ליצור מחרוזות גולמיות באמצעות f-strings גם.

print(f'Default Formatted Date:\n{d}')
print(fr'Default Formatted Date:\n {d}')

פלט:

Default Formatted Date:
2018-10-10 11:47:12.818831
Default Formatted Date:\n 2018-10-10 11:47:12.818831

3. מחרוזות f עם אובייקטים ומאפיינים

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

class Employee:
    id = 0
    name = ''

    def __init__(self, i, n):
        self.id = i
        self.name = n

    def __str__(self):
        return f'E[id={self.id}, name={self.name}]'


emp = Employee(10, 'Pankaj')
print(emp)

print(f'Employee: {emp}\nName is {emp.name} and id is {emp.id}')

פלט:

E[id=10, name=Pankaj]
Employee: E[id=10, name=Pankaj]
Name is Pankaj and id is 10

4. מחרוזות f שקוראות לפונקציות

ניתן לקרוא לפונקציות בעיצוב מחרוזות f גם כן.

def add(x, y):
    return x + y


print(f'Sum(10,20) = {add(10, 20)}')

פלט: Sum(10,20) = 30

5. מחרוזות f עם רווחים

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

>>> age = 4 * 20
>>> f'   Age = {  age   }  '
'   Age = 80  '

6. ביטויי למדה עם מחרוזות f

ניתן להשתמש בביטויי למדה (Lambda expressions) בתוך ביטויי מחרוזת f גם כן.

x = -20.45
print(f'Lambda Example: {(lambda x: abs(x)) (x)}')

print(f'Lambda Square Example: {(lambda x: pow(x, 2)) (5)}')

פלט:

Lambda Example: 20.45
Lambda Square Example: 25

7. דוגמאות שונות של f-strings

בואו נסתכל על כמה דוגמאות שונות של f-strings בפייתון.

print(f'{"quoted string"}')
print(f'{{ {4*10} }}')
print(f'{{{4*10}}}')

פלט:

quoted string
{ 40 }
{40}

זהו כל מה שיש לנו לגבי מחרוזות מעוצבות בפייתון או f-strings.

ניתן לבדוק את הסקריפט המלא של פייתון ועוד דוגמאות בפייתון מהמאגר שלנו ב-GitHub Repository.

הפניה: PEP-498, תיעוד רשמי

Source:
https://www.digitalocean.com/community/tutorials/python-f-strings-literal-string-interpolation