Python Single Underscore Usage
هنتكلم عن الاستخدامات المختلفة للـ Single Underscore او العلامة الـ بين الاقواس دي ( _ ).
في استخدامات كتيرة للـ Underscore لكن انا مش هطول عليك وهتكلم عن اثنين من أهمهم من وجهي نظري, لان لقيت باقي الاستخدامات قليل انك تقابلها فـ هتكون عامل مشتت اكتر منها مفيد.
هنتكلم عن نقطين وهم:
** Separate long digits.
** Private.
Separate long digits
لو طلبت منك تكتبلي رقم مكون من 8 ارقام, مثلا, 10050500, هيكون مقروء لكن اسهل القراءة لو كنت كتبته بالشكل ده, 100,50,500.
لو حاولت اكتب نفس الرقم بالطريقة السهلة داخل الـ Python هتعتبر Tuple.
لو انت مش فاكر خليني اذكرك ان الـ Tuple داخل البايثون ليها طريقتين بالكتابة كالتالي:
# Tuple
100, 50, 500
# Also a Tuple
(100, 50, 500)
ولو حاولنا نستخدم الـ Dots يبقى بنتعامل مع Object وهيظهرلك Error كالتالي:
File "<stdin>", line 1
100.50.500
^
SyntaxError: invalid syntax
الحل ان احنا نستخدم الـ Underscore كالتالي:
number_var = 100_50_500
الـ Python Interpreter هيترجمه لـ 10050500, لكن الـ يقرأ الكود هيكون اسهل عليه فهم الرقم.
Private
لو انت عملت Script وكتبت Function اسمها قبله الـ Underscore, الـ Function هتتعامل كـ Private مربوطة بالـ Script المكتوبة جواه لو تم عمل * Import ليها بواسطة script خارجي.
امشي معايا بالمثال التالي:
** هـ Create عدد 2 ملف Python
** الملف الاول اسمه script1.py
** الملف الثاني اسمه script2.py
** الملفين داخل نفس الـ Folder
داخل الـ script1.py اكتب الكود التالي:
def dog():
print("Parking")
def _human():
print("Angry")
داخل الـ script2.py هنعمل استدعاء لكل خصائص الملف script1.py باستخدام import, لاحظ التالي:
** الـ dog function هيتم استدعائها بشكل عادي
** الـ human function هيتم تعريفها انها مش موجودة
from script1 import *
dog()
_human()
ده لان الـ Underscore خلت الـ Function لا يمكن استدعائها غير بشكل مباشر, زي الكود التالي:
import script1
script1._human()
انت مش ملتزم فقط بالـ Functions لكن الموضوع ينطبق على اي ما يمكن يتم تسميته زي الـ class والـ variables, جرب ده بنفسك.
لو انت قررت تستخدم الـ Python Keywords زي الـ (class, object, int ,str ... etc) كـ Variables مثلآ, بتكتب الـ Underscore بعد الكلمة:
_class
_object
_int
_str
اكيد يفضل انك مش تعمل كده ابدآ لان ده Bad Practices, بس للعلم بيها فقط.