آموزش کامل اف-استرینگ (f-strings) در پایتون: از صفر تا پیشرفته

اف-استرینگ در پایتون (f-strings) که از پایتون نسخه 3.6 به بعد معرفی شد، روشی قدرتمند، خوانا و سریع برای قالببندی رشتهها در پایتون هستند. این مقاله شما را از مفاهیم پایه تا کاربردهای پیشرفته اف-استرینگها راهنمایی میکند و با مثالهای عملی، تمام جنبههای آن را پوشش میدهد.
1. اف-استرینگ چیست؟
اف-استرینگ (Formatted String Literal) روشی برای قالببندی رشتهها است که با قرار دادن پیشوند f یا F قبل از رشتهها تعریف میشود. درون این رشتهها، میتوانید عبارات پایتون را داخل کروشهها {} قرار دهید تا بهصورت خودکار در رشته جایگذاری شوند.
مثال پایه:
name = "Alice"
age = 30
greeting = f"Hello, I'm {name} and I'm {age} years old."
print(greeting) # Output: Hello, I'm Alice and I'm 30 years old.
مزایای اف-استرینگها:
خوانایی بالا
سرعت اجرای بهتر نسبت به روشهای قدیمیتر مانند % یا str.format()
امکان استفاده از عبارات پیچیدهتر داخل {}
2. نحوه استفاده اولیه از اف-استرینگ
برای استفاده از اف-استرینگ، کافی است رشته خود را با f شروع کنید و متغیرها یا عبارات را داخل کروشهها {} قرار دهید.
مثال:
x = 10
y = 20
result = f"The sum of {x} and {y} is {x + y}."
print(result) # Output: The sum of 10 and 20 is 30.
میتوانید هر نوع دادهای (اعداد، رشتهها، لیستها و غیره) را داخل {} قرار دهید.
3. قالببندی اعداد
اف-استرینگها از قالببندیهای پیشرفته برای نمایش اعداد پشتیبانی میکنند. این کار با استفاده از مشخصکنندههای قالب (Format Specifiers) انجام میشود.
3.1. تعداد اعشار برای اعداد اعشاری
برای کنترل تعداد اعشار، از :.nf استفاده کنید، که n تعداد اعشار است.
مثال:
pi = 3.14159
print(f"Pi with two decimals: {pi:.2f}") # Output: Pi with two decimals: 3.14
3.2. نمایش اعداد با فاصلهگذاری
برای اضافه کردن فاصله در اعداد بزرگ، از :, استفاده کنید.
مثال:
number = 1000000
print(f"Number: {number:,}") # Output: Number: 1,000,000
3.3. نمایش اعداد بهصورت درصد
برای نمایش درصد، از :% استفاده کنید.
مثال:
percentage = 0.756
print(f"Percentage: {percentage:.1%}") # Output: Percentage: 75.6%
4. قالببندی رشتهها
میتوانید برای رشتهها هم قالببندیهای خاصی اعمال کنید، مانند ترازبندی یا پر کردن با کاراکترهای خاص.
4.1. ترازبندی متن
< برای تراز چپ
> برای تراز راست
^ برای تراز وسط
مثال:
name = "Python"
print(f"|{name:<10}|") # Output: |Python |
print(f"|{name:>10}|") # Output: | Python|
print(f"|{name:^10}|") # Output: | Python |
4.2. پر کردن با کاراکتر خاص
برای پر کردن فضای خالی با کاراکتر دلخواه، کاراکتر را قبل از مشخصکننده تراز قرار دهید.
مثال:
print(f"|{name:*^10}|") # Output: |**Python**|
5. استفاده از عبارات پیچیده
اف-استرینگها اجازه میدهند عبارات پایتون را مستقیماً داخل {} بنویسید.
مثال:
numbers = [1, 2, 3]
print(f"Sum of list: {sum(numbers)}") # Output: Sum of list: 6
print(f"Last number: {numbers[-1]}") # Output: Last number: 3
حتی میتوانید توابع یا شرطها را داخل {} استفاده کنید:
مثال:
age = 20
status = f"Status: {'Adult' if age >= 18 else 'Teen'}"
print(status) # Output: Status: Adult
6. قالببندی تاریخ و زمان
با استفاده از ماژول datetime، میتوانید تاریخ و زمان را بهصورت قالببندیشده نمایش دهید.
مثال:
from datetime import datetime
now = datetime.now()
print(f"Today's date: {now:%Y-%m-%d}") # Output: Today's date: 2025-06-01
print(f"Time: {now:%H:%M:%S}") # Output: Time: 13:45:00
7. استفاده از دیکشنری و اشیاء
میتوانید از کلیدهای دیکشنری یا ویژگیهای اشیاء در اف-استرینگها استفاده کنید.
مثال با دیکشنری:
person = {"name": "Sarah", "age": 25}
print(f"Name: {person['name']}, Age: {person['age']}")
# Output: Name: Sarah, Age: 25
مثال با کلاس:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p = Person("John", 30)
print(f"Name: {p.name}, Age: {p.age}")
# Output: Name: John, Age: 30
8. استفاده از اف-استرینگ در حلقهها
اف-استرینگها در حلقهها بسیار کاربردی هستند.
مثال:
for i in range(3):
print(f"Row number: {i + 1}")
# Output:
# Row number: 1
# Row number: 2
# Row number: 3
9. نکات پیشرفته
9.1. استفاده از {} بهصورت دستی
اگر بخواهید خود کروشهها را در خروجی نمایش دهید، از {{}} استفاده کنید.
مثال:
print(f"Braces: {{}}") # Output: Braces: {}
9.2. اف-استرینگهای چندخطی
میتوانید از اف-استرینگها در رشتههای چندخطی استفاده کنید.
مثال:
name = "Alice"
age = 30
info = f"""
Name: {name}
Age: {age}
"""
print(info)
# Output:
# Name: Alice
# Age: 30
9.3. استفاده از = برای دیباگ
از پایتون 3.8 به بعد، میتوانید از = در اف-استرینگ استفاده کنید تا نام متغیر و مقدار آن را نمایش دهید.
مثال:
x = 42
print(f"{x=}") # Output: x=42
9.4. قالببندی پیشرفته با پدینگ و عرض ثابت
میتوانید عرض ثابت و پر کردن با کاراکتر را ترکیب کنید.
مثال:
number = 42
print(f"Number: {number:0>5}") # Output: Number: 00042
10. مقایسه با روشهای دیگر
قبل از اف-استرینگها، روشهای دیگری مانند % و str.format() برای قالببندی رشتهها استفاده میشدند.
مثال با %:
name = "Alice"
print("Hello, %s" % name) # Output: Hello, Alice
مثال با str.format():
print("Hello, {}".format(name)) # Output: Hello, Alice
چرا اف-استرینگ بهتر است؟
سادهتر و خواناتر
سریعتر در اجرا
امکان استفاده از عبارات پیچیدهتر
11. محدودیتها و نکات مهم
نیاز به پایتون 3.6+: اف-استرینگها در نسخههای قدیمیتر پایتون پشتیبانی نمیشوند.
امنیت: اگر دادهها از ورودی کاربر دریافت میشوند، مراقب باشید که عبارات خطرناک در {} اجرا نشوند.
عملکرد: برای رشتههای بسیار بزرگ یا پیچیده، اف-استرینگها همچنان سریعتر از روشهای دیگر هستند، اما همیشه عملکرد را تست کنید.
12. جمعبندی
اف-استرینگ در پایتون روشی مدرن و قدرتمند برای قالببندی رشتهها هستند. از قالببندی ساده متغیرها تا عبارات پیچیده، تاریخ و زمان، و حتی دیباگ، اف-استرینگها امکانات گستردهای ارائه میدهند. با تمرین مثالهای این مقاله، میتوانید بهراحتی از این قابلیت در پروژههای خود استفاده کنید.
برای مطالعه بیشتر، به مستندات رسمی پایتون مراجعه کنید یا در دوره کامل پایتون ثبتنام کنید.
دیدگاهتان را بنویسید