في هذا البرنامج التعليمي، سوف نتعرف على آلية تنسيق السلسلة. السلسلة f هي أفضل طريقة لتنسيق السلسلة. يجعل نمط تنسيق السلسلة السلسلة أكثر قابلية للقراءة، وأكثر إيجازًا، وأقل عرضة للخطأ. كما أنه أسرع من الآخر.
قبل التعمق في هذا الموضوع، سنناقش أولاً التقنيات التي تم استخدامها قبل السلسلة f.
تنسيق السلسلة القديم في بايثون
هناك طريقتان رئيسيتان لتنسيق السلسلة: % - التنسيق و تنسيق str. لكن كلتا الطريقتين لهما بعض القيود. دعونا نلقي مقدمة موجزة عن هذه الأساليب المعطاة.
1.% - التنسيق
إنها طريقة تقليدية لتنسيق السلسلة، لكن المستندات توصي بهذه الطريقة، والتي تحتوي على العبارة التالية.
'تعرض عمليات التنسيق الموصوفة هنا مجموعة متنوعة من المراوغات التي تؤدي إلى العديد من الأخطاء الشائعة (مثل الفشل في عرض الصفوف والقواميس بشكل صحيح).
باستخدام أحدث سلسلة حرفية منسقة أو تنسيق str () تساعد الواجهة على تجنب هذه الأخطاء.' - التوثيق الرسمي .
كيفية استخدام % - التنسيق
يمكننا إجراء عملية مضمنة باستخدام عامل التشغيل %. دعونا نفهم المثال التالي.
student = 'Michel' 'Hello, %s.' % student
انتاج:
Hello Michel
يمكننا أيضًا استخدام tuple لتخزين المتغيرات المتعددة. دعونا نرى المثال التالي.
name = 'Sharma' age = 24 'Hello, %s. You are %s.' % (name, age)
انتاج:
Hello Sharma You are 24.
لماذا لا يوصى بتنسيق %
لأنه مع زيادة المتغير وزيادة طول السلسلة، تصبح قراءة التعليمات البرمجية الخاصة بنا أقل سهولة. يبدو الرمز فوضويًا. دعونا نرى المثال التالي.
مثال -
first_name = 'Steve' last_name = 'Rogers' age = 70 profession = 'Superhero' group = 'Marvel? print(''Hello, %s %s. Your age is %s. You are a %s. You were a member of %s.' %(first_name, last_name, age, profession)')
انتاج:
Hello, Steve Rogers. Your age is 70. You are a Superhero. You were a member of Marvel.
كما نرى في الكود أعلاه، أصبح الكود صعب القراءة وأكثر عرضة للخطأ. ولهذا السبب فإن طريقة تنسيق السلسلة هذه ليست جيدة.
2. طريقة str.format()
إنها طريقة شائعة أخرى لتنسيق السلسلة المقدمة في Python 2.6. دعونا نرى كيف يمكننا استخدامه.
كيفية استخدام str.format()
إنه تحسين على تنسيق %. إنها مثل وظيفة عادية مضمنة يتم استدعاؤها على الكائن ويتم تحويل هذا الكائن إلى سلسلة.
int إلى سلسلة Java
دعونا نرى المثال التالي.
مثال -
first_name = 'Mathew' last_name = 'Zukerburg' age = 45 print('Hello, {}. You are {}.'.format(name, age)')
للوصول إلى عنصر القاموس داخل طريقة التنسيق، يمكننا تمرير المفتاح في طريقة التنسيق ().
person = {'name': 'Peter', 'age': 17} 'Hello, {name}. You are {age}.'.format(name=person['name'], age=person['age'])
انتاج:
Hello Peter, You are 17
لماذا لا يُنصح باستخدام طريقة str.format()؟
تعتبر الدالة str.format() أكثر كفاءة من الدالة %-format، لكنها قد تظل مطولة تمامًا عندما نتعامل مع المعلمات المتعددة.
طريقة F-سلسلة
إنها آلية تنسيق سلسلة جديدة قدمها PEP 498. وتُعرف أيضًا باسم استيفاء السلسلة الحرفية أو بشكل أكثر شيوعًا باسم F-strings (حرف f يسبق السلسلة الحرفية). التركيز الأساسي لهذه الآلية هو تسهيل الاستيفاء.
عندما نبدأ السلسلة بالحرف 'F'، تصبح السلسلة هي السلسلة f نفسها. يمكن تنسيق السلسلة f بنفس تنسيق تنسيق str () طريقة. توفر السلسلة F طريقة ملائمة لتضمين تعبير Python داخل سلسلة حرفية للتنسيق.
مثال -
# Python3 program introducing f-string val = 'Geeks' print(f'{val}for{val} is a portal for {val}.') name = 'Tushar' age = 23 print(f'Hello, My name is {name} and I'm {age} years old.')
انتاج:
Hello, My name is Tushar and I'm 28 years old.
في الكود أعلاه، استخدمنا السلسلة f لتنسيق السلسلة. يتم تقييمه في وقت التشغيل؛ يمكننا وضع جميع تعبيرات بايثون الصالحة فيها.
يمكننا استخدامه في عبارة واحدة.
print(f'{2 * 30})'
انتاج:
60
ومع ذلك، يمكننا استخدامها في الدالة.
def upercase(input): return input.uper() name = 'Sachin Tendulkar' f'{upercase(name)} is great.'
انتاج:
Sachin Tendulkar is great
يمكن أيضًا استخدام السلسلة f مع كائن الفئة. دعونا نفهم المثال التالي.
مثال -
class Actor: def __init__(self, first_name, last_name, movie): self.first_name = first_name self.last_name = last_name self.movie = movie def __str__(self): return f'{self.first_name} {self.last_name}'s superhit movie is {self.movie}.' def __repr__(self): return f'{self.first_name} {self.last_name} {self.movie}. Superhi!' ac = Actor('Keenu', 'Reevs', 'Matrix') print(f'{ac}')
انتاج:
Keenu Reevs's superhit movie is Matrix.
توضيح -
في الكود أعلاه، استخدمنا __str__() و __repr__()، لتمثيل كائن كسلسلة. لذلك نحن بحاجة إلى تضمين واحدة على الأقل من تلك الأساليب في تعريف الفئة. ستستخدم السلسلة f الطريقة __str__(); يمكننا أيضًا استخدام الدالة __repr__() من خلال تضمين علامة التحويل! ص.
print(f'{ac}') print(f'{ac}'!r)
انتاج:
Keenu Reevs's superhit movie is Matrix. Keenu Reevs Matrix Superhit
سلسلة F في القاموس
يجب علينا توخي الحذر أثناء العمل باستخدام مفاتيح القاموس داخل السلسلة f. هناك اقتباس مختلف لاستخدام مفاتيح القاموس وسلسلة f. دعونا نفهم المثال التالي.
مثال -
detail = {'name': 'John', 'age': 19} print(f'{detail['name']} is {detail['age']} years old.')
انتاج:
John is 19 years old.
الطريقة أدناه غير مسموح بها في حالة القاموس.
مثال -
detail = {'name': 'John', 'age': 19} print(f'{detail['name']} is {detail['age']} years old.')
انتاج:
File '', line 2 print(f'{detail['name']} is {detail['age']} years old.') ^ SyntaxError: invalid syntax
كما نرى في الكود أعلاه، قمنا بتغيير علامات الاقتباس المزدوجة إلى علامات اقتباس مفردة، وقد أدى ذلك إلى حدوث خطأ.
سرعة
السبب وراء تكييف نمط التنسيق هذا هو سرعته. يتم تقييم السلسلة f في وقت التشغيل بدلاً من القيم الثابتة. فهو يدمج التعبير داخل سلسلة حرفية، باستخدام الحد الأدنى من بناء الجملة. إنه سريع لأنه يتم تقييمه في وقت التشغيل، وليس قيمة ثابتة.
دعونا نرى مقارنة السلسلة التالية.
مثال 1:
import timeit print(timeit.timeit('''name = 'Sachin' age = 74 '%s is %s.' % (name, age)''', number = 10000))
انتاج:
0.0022497819736599922
مثال - 2:
import timeit print(timeit.timeit('''name = 'Mathew' age = 40 '{} is {}.'.format(name, age)''', number = 10000))
انتاج:
0.0025783719611354172
مثال - 3:
import timeit print(timeit.timeit('''name = 'Rockey' age = 74 f'{name} is {age}.'''', number = 10000))
انتاج:
0.0019360429723747075
كما يمكننا أن نلاحظ، فإن السلسلة f موجودة في أعلى القائمة.
الأقواس
لإظهار الأقواس في التعليمات البرمجية، يجب عليك استخدام علامات الاقتباس المزدوجة على النحو التالي. دعونا نفهم المثال التالي.
مثال -
f'{{70 + 40}}'
انتاج:
{70 + 40}
إذا استخدمنا الأقواس الثلاثية، فسوف يتم عرض أقواس مفردة في سلسلتنا. دعونا نفهم المثال التالي.
مثال -
f'{{{90 + 4}}}'
انتاج:
{94}
يمكننا عرض المزيد من الأقواس إذا استخدمنا أكثر من الأقواس الثلاثية.
مثال -
f'{{{{70 + 4}}}}'
انتاج:
{{70 + 4}}
خطوط مائلة عكسية
يمكننا استخدام هروب الشرطة المائلة العكسية في جزء السلسلة من سلسلة f. ومع ذلك، لا يمكننا استخدام الخطوط المائلة العكسية للهروب في جزء التعبير من سلسلة f. دعونا نفهم المثال التالي.
مثال -
f'{'Medric Pacalo'}' File '', line 1 f'{'Medric Pacalo'}'
انتاج:
SyntaxError: f-string expression part cannot include a backslash
التعليقات المضمنة
لا يمكننا تضمين الرمز # في التعبير. وسوف يلقي خطأ في بناء الجملة. دعونا نفهم المثال التالي.
مثال -
f'Tony is {10 * 73 #Hate this!}.' f'Tonyr is {2 * 37 #Hate this!}.'
انتاج:
SyntaxError: f-string expression part cannot include '#'
خاتمة
يمكننا استخدام أي طريقة من بين ثلاث طرق، لكن طريقة f-string توفر طريقة أكثر إيجازًا وقابلية للقراءة وملاءمة. إنه أسرع وأقل عرضة للخطأ. لقد شرحنا تقريبًا كل السيناريوهات الممكنة خارج السلسلة ولماذا يجب على المرء أن يأخذ في الاعتبار هذا النهج في البرمجة.