تنسيق النصوص المباشر (f-strings)
حتى الآن كنا ندمج النصوص باستخدام الجمع +، مثل:
name = "Alice"
friend = 'Bob'
meal = "lunch"
print(name + " went to " + meal + " with " + friend + '.')
لكن هذه الطريقة تصبح مرهقة كلما زادت الأجزاء. يمكن كتابة الشيء نفسه بصورة أوضح باستخدام f-string. استبدل السطر الأخير بـ:
print(f"{name} went to {meal} with {friend}.")
تأكد من كتابة الحرف f قبل علامة الاقتباس.
صيغة الـf-string تبدأ بالحرف f قبل السلسلة النصية. وداخل النص يمكنك وضع تعبيرات بايثون بين الأقواس المعقوفة {}؛ يقوم بايثون بتقييم كل تعبير ثم يحوّل نتيجته إلى نص ويضعها في مكانها.
لهذا يمكن أن تكون المتغيرات من أنواع مختلفة، ولا تحتاج إلى تحويل الأعداد يدويًا إلى نص قبل دمجها. هذه طريقة سهلة خصوصًا عند الجمع بين نصوص وأعداد.
جرّب البرنامج التالي:
name = 'Alice'
age = 20
print('Hello ' + name + '. You are ' + age + ' years old.')
في البرنامج الحالي توجد محاولة لدمج نص مع العدد الموجود في المتغير age باستخدام +، ولذلك يفشل البرنامج لأن بايثون لا يجمع سلسلة نصية وعددًا بهذه الطريقة.
أصلح كل عمليات الدمج في البرنامج باستخدام f-string واحدة، بحيث يُبنى النص المطلوب بوضوح ويعمل مهما كانت قيمة age.
هذا مثل مثال الـf-string المعطى.
هل نسيت حرف
f؟كم زوجًا من الأقواس المعقوفة تحتاج؟
لا يلزم أن تحتوي الأقواس المعقوفة داخل f-string على اسم متغير فقط؛ يمكن أن تضع داخلها أي تعبير صالح في بايثون، وسيتم تقييمه أولًا ثم إدراج النتيجة في النص.
جرّب:
f"2 * 3 + 4 is equal to {2 * 3 + 4}"
لاحظ أن الجزء خارج الأقواس يبقى نصًا كما كتبته، بينما الجزء داخل {} يُحسب.
تذكّر أنك تستطيع استخدام علامات الاقتباس المزدوجة عندما يحتوي النص على فاصلة عليا، وأن صيغة f-string هي مجرد طريقة لكتابة السلسلة في الكود؛ بعد تقييمها لا يبقى الحرف f أو الأقواس المعقوفة في القيمة النهائية.
البرنامج التالي مكسور:
people = ["Alice", "Bob", "Charlie"]
print('There are' + people.length() + 'people waiting, the first one's name is' + people.1 + '.')
أصلحه بطريقة عامة بحيث يطبع:
There are 3 people waiting, the first one's name is Alice.
يجب أن يعمل الحل أيضًا إذا تغيّر عدد الأشخاص أو تغيّر الاسم الأول في القائمة.
هناك أربع مشكلات في التعبير داخل
print.هناك خطأ في الصياغة التي تحسب عدد الأشخاص.
وأحد النصوص فيه مشكلة في علامات الاقتباس.
وهناك أيضًا خطأ في الصياغة التي تصل إلى اسم أول شخص.
ولا يمكنك جمع نصوص وأعداد معًا.
هل استخدمت الأقواس المعقوفة بشكل صحيح داخل الـf-string؟
ممتاز!
من الآن فصاعدًا، استخدم f-strings لبناء النصوص عندما تكون مناسبة بدل الاعتماد على + في كل مرة؛ فهي غالبًا أوضح وأسهل قراءة.