تقنية

format في بايثون: هل !s تستعمل تنسيق الكائن نفسه؟

التنسيق المباشر يعيد own:>5 من الصنف المؤلف.
تنسيق الصنف.

!s تحول القيمة إلى نص قبل التنسيق. [1]

الخلاصة السريعة

لا؛ التنسيق بعدها يخص السلسلة الناتجة من str. [1]

  • !s تحول القيمة إلى نص قبل التنسيق. [1]
  • التحويل يستعمل str ويتجاوز __format__ الأصلي؛ تُنسّق بعدها السلسلة النصية. [1]
  • مثال مؤلف على CPython 3.12.14: صنف Item أدناه يعيد "bud" من __str__، و"own:"+spec من __format__. [1]
  • "{:>5}".format(x) تعطي "own:>5" من صنفنا؛ "{!s:>5}".format(x) تعطي " bud" بمسافتين قبل bud. [1]
  • تحكم يدوي: مسافتان ثم str(x) تعطيان الناتج نفسه؛ طوله 5 محارف. [1]

التحويل أولًا

!s تحول القيمة إلى نص قبل التنسيق. [1]

نوع يُنسّق

التحويل يستعمل str ويتجاوز __format__ الأصلي؛ تُنسّق بعدها السلسلة النصية. [1]

صنف بتنسيق مؤلف

مثال مؤلف على CPython 3.12.14: صنف Item أدناه يعيد "bud" من __str__، و"own:"+spec من __format__. [1]

class Item: def __str__(self): return "bud" def __format__(self,spec): return "own:"+spec x=Item() [1]

!s تنتج bud مسبوقة بمسافتين.
تنسيق النص.

الناتج والتحكم

"{:>5}".format(x) تعطي "own:>5" من صنفنا؛ "{!s:>5}".format(x) تعطي " bud" بمسافتين قبل bud. [1]

"{!s:>5}".format(x) -> " bud" [1]

تحكم يدوي: مسافتان ثم str(x) تعطيان الناتج نفسه؛ طوله 5 محارف. [1]

المراجع

  1. Python — conversion before formatting

للتوسع: لغات البرمجة.

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.