90% من مبرمجي بايثون لا يعرفون هذه الاستخدامات للشرطة السفلية

تُستخدم الشرطة السفلية (_) في بايثون لأغراض أكثر مما يدركه معظم المطورين. فبينما يربط المبتدئون عادةً الشرطة السفلية بأسماء المتغيرات، يستخدمها مبرمجو بايثون المخضرمون في تطبيقات عملية متنوعة. إليكم سبعة استخدامات فعّالة للشرط السفلية في بايثون قد يجهلها 90% من المبرمجين.

استرداد آخر قيمة محسوبة

في واجهة بايثون التفاعلية (REPL)، يمكنك استخدام الشرطة السفلية (_) لاسترداد نتيجة آخر تعبير تم تقييمه.

>>> 5 + 10
15
>>> _ * 2  # Uses the last computed value (15)
30

يُعد هذا مفيدًا عند إجراء حسابات سريعة دون تخزين النتائج الوسيطة.

العنصر النائب لمتغيرات الحلقة

يمكنك استخدام الشرطة السفلية كعلامة مكانية عند عدم الحاجة لاستخدام متغير الحلقة داخلها. هذا يوضح أن متغير الحلقة غير مستخدم عمدًا.

for _ in range(3):
    print("Hello!")

الناتج:

Hello!
Hello!
Hello!

تكون هذه التقنية مفيدة عند تنفيذ كتلة التعليمات البرمجية عدة مرات دون مراعاة مؤشر التكرار.

فاصل الأرقام لسهولة القراءة

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

# Underscores improve readability but do not affect the value
num = 1_000_000  # Same as 1000000
print(num)

الناتج:

1000000

وهذا مفيد بشكل خاص عند التعامل مع الحسابات المالية أو العلمية.

إعلان المتغيرات للاستخدام الداخلي

تشير الشرطة السفلية المزدوجة (__var)  إلى أن المتغير مخصص للاستخدام الداخلي. إذا كنت ترغب في تشويه اسم المتغير بشكل أقوى للإشارة إلى أنه خاص، فعليك استخدام الشرطة السفلية المزدوجة (__internal_var)، مما يؤدي إلى تشويه الاسم.

class Example:
    def __init__(self):
        self.__internal_var = "This is for internal use"  # Name mangling applied
def get_internal_var(self):  # A getter method to access the private variable
        return self.__internal_varobj = Example()
# print(obj.__internal_var)  # This will raise an AttributeError
print(obj.get_internal_var())  # Correct way to access the private variable

لا يمنع Python الوصول إلى _internal_var، ولكنه يقترح على المطورين تجنب استخدامه خارج الفصل.

تجنب التعارضات مع الكلمات الرئيسية

إذا كان اسم المتغير يتعارض مع كلمة رئيسية محجوزة، فمن الممكن إضافة شرطة سفلية لاحقة لحل التعارض.

def my_function(class_):  # 'class' is a reserved keyword, so we use 'class_'
    return f"This is a {class_}"
print(my_function("Python class"))

تتيح لك هذه التقنية استخدام أسماء متغيرات ذات معنى دون كسر بناء جملة Python.

الإشارة إلى السمات الخاصة

تتيح لك الخطوط السفلية المزدوجة (__var) تعديل الأسماء، مما يجعل الوصول إلى السمات من خارج الفصل أكثر صعوبة.

class PrivateExample:
    def __init__(self):
        self.__hidden = "This is private"  # Private variable (name-mangled)
obj = PrivateExample()
# print(obj.__hidden)  # This would raise an AttributeError
# Accessing private variable using name-mangling (not recommended for regular use)
print(obj._PrivateExample__hidden)  # Output: This is private

على الرغم من أنها ليست خاصة تمامًا، فإن هذه الآلية تثبط الوصول المباشر إلى السمات الحساسة.

العلامات السفلية في بايثون ليست مجرد تسمية؛ بل هي أغراض وظيفية تُحسّن قابلية القراءة. إتقان هذه الحيل سيساعدك على كتابة أكواد بايثون أدق وأكثر كفاءة.

أيّ من هذه الخيارات وجدتَه الأكثر فائدة؟ شاركني رأيك في التعليقات أدناه!


اكتشاف المزيد من بايثون العربي

اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

Scroll to Top

اكتشاف المزيد من بايثون العربي

اشترك الآن للاستمرار في القراءة والحصول على حق الوصول إلى الأرشيف الكامل.

Continue reading