منذ إصدار Python 3.6، غيّرت f-strings طريقة التعامل مع السلاسل النصية المضمنة بالمتغيرات والتعبيرات. قدمت هذه الميزة تنسيقًا مباشرًا وسهل القراءة، مما جعلها الخيار المفضل لدى المبرمجين. لكن مع تطور اللغة، ظهرت الحاجة إلى دعم أفضل للسلاسل متعددة الأسطر التي تحتوي على تعبيرات ديناميكية، فكان الحل في Python 3.14 مع ما يُعرف بـ t-strings.
في هذا المقال، نستعرض الفرق بين f-strings وt-strings، متى يُفضل استخدام كل نوع، وكيف يمكن لكل منهما تحسين جودة الكود وسهولة قراءته، مدعومًا بالأمثلة الواضحة.
أولًا: ما هي f-strings؟
f-strings أو ما تُعرف بالسلاسل المهيأة (Formatted String Literals) هي ميزة تسمح بدمج القيم مباشرة في النص باستخدام الأقواس {}
. هذه الميزة تجعل كتابة السلاسل النصية أكثر وضوحًا، دون الحاجة إلى استخدام العمليات التقليدية مثل str.format()
أو التجميع اليدوي باستخدام +
.
مثال بسيط:
name = "Omar"
age = 25
print(f"My name is {name} and I'm {age} years old.")
الإخراج:
My name is Omar and I'm 25 years old.
هذه الطريقة تجعل من السهل تضمين المتغيرات مباشرة دون الحاجة إلى فصل النصوص أو استخدام دوال معقدة.
عيوب f-strings في التنسيقات المعقدة
رغم قوتها، تعاني f-strings من بعض القيود عند التعامل مع سلاسل متعددة الأسطر، خاصة عند تضمين التعبيرات داخلها، حيث تصبح القراءة صعبة، وتحتاج إلى كسر الأسطر يدويًا أو استخدام تنسيقات ملتوية.
مثال معقد:
name = "Salma"
score = 87
print(
f"Student: {name}\n"
f"Score: {score}\n"
f"Status: {'Pass' if score >= 60 else 'Fail'}"
)
الكود يعمل، لكنه غير أنيق ويصعب الحفاظ عليه مع ازدياد حجم النص.
t-strings: الحل القادم في Python 3.14
في Python 3.14، تم تقديم تحسين جديد من خلال PEP 701 يسمح بكتابة f-strings متعددة الأسطر بشكل مباشر وأكثر مرونة، ويُطلق عليه اسم t-string.
الشكل الجديد:
name = "Salma"
score = 87
print(t"""
Student: {name}
Score: {score}
Status: {"Pass" if score >= 60 else "Fail"}
""")
الإخراج:
Student: Salma
Score: 87
Status: Pass
الفرق هنا واضح. لم نعد نحتاج إلى كسر الأسطر يدويًا أو تكرار f""
، وتمكنا من كتابة النصوص بشكل طبيعي كما نكتب أي قالب HTML أو Markdown مع الحفاظ على ديناميكية المحتوى.
مزايا t-string مقارنة بـ f-string
الجانب | f-string | t-string |
---|---|---|
تم تقديمه في | Python 3.6 | Python 3.14 |
دعم متعدد الأسطر | جزئي ومعقد | كامل ومرن |
سهولة القراءة | جيدة في السطر الواحد فقط | ممتازة خاصة للنصوص الكبيرة |
قابلية تضمين التعبيرات | نعم | نعم بنفس الطريقة |
الاستخدام في القوالب النصية | غير مريح | مريح جداً |
استخدامات واقعية لـ t-strings
1. قوالب HTML
title = "Hello"
body = "Welcome to my site"
print(t"""
<html>
<head><title>{title}</title></head>
<body>{body}</body>
</html>
""")
2. تنسيقات Markdown
username = "admin"
last_login = "2025-07-01"
print(t"""
### User Report
- **Username**: {username}
- **Last Login**: {last_login}
""")
3. رسائل البريد الإلكتروني
recipient = "Ahmed"
message = "Your order has been shipped!"
print(t"""
Dear {recipient},
{message}
Thanks,
Support Team
""")
هل يمكن استخدام t-string الآن؟
حتى تاريخ كتابة هذا المقال، t-strings متاحة فقط في Python 3.14 وما بعده. أي محاولة لاستخدام t"""..."""
في الإصدارات الأقدم ستؤدي إلى خطأ.
للتجربة، يمكنك تحميل Python 3.14 بمجرد صدوره رسميًا أو تجربته من خلال نسخة تجريبية (Alpha أو Beta) إن كنت مطورًا مهتمًا بالميزات الجديدة.
ملاحظات تقنية حول t-strings
-
الحرف
t
ليس له معنى جديد، بل هو مجرد رمز يفعل ميزة دعم f-strings متعددة الأسطر بطريقة واضحة. -
يمكن استخدام أي نوع من التعبيرات داخل
{}
تمامًا كما في f-strings. -
t-strings ليست نوعًا جديدًا من الكائنات النصية، بل هي فقط طريقة جديدة للكتابة.
متى تستخدم f-string أو t-string؟
-
استخدم f-string عند كتابة سلاسل قصيرة أو عند الحاجة إلى التعبير عن قيمة واحدة داخل جملة.
-
استخدم t-string عندما:
-
تكون السلسلة النصية متعددة الأسطر.
-
تكتب قوالب HTML، JSON، Markdown.
-
تحتاج إلى وضوح في التنسيق.
-
خاتمة
f-strings غيرت قواعد اللعبة في تنسيق السلاسل النصية في Python، لكنها لم تكن مثالية في جميع الحالات، خاصة النصوص متعددة الأسطر. هنا جاءت t-strings كحل عملي وفعّال في Python 3.14، لتُسهل كتابة الكود وتُحسن من قراءته، خاصة في السيناريوهات المعتمدة على القوالب النصية أو الإخراج الديناميكي.
ومع استمرار تطور بايثون، من المؤكد أننا سنشهد المزيد من الميزات التي تهدف إلى تحسين الإنتاجية وتقليل التعقيد.