الأسماء الصالحة وغير الصالحة واصطلاحات التسمية للمعرفات (مثل أسماء المتغيرات) في Python

اعمال

في Python ، يجب تحديد المعرفات (أسماء المتغيرات والوظائف والفئات وما إلى ذلك) وفقًا للقواعد. الأسماء التي لا تتبع القواعد لا يمكن استخدامها كمعرفات وستؤدي إلى حدوث خطأ.

يتم توفير المعلومات التالية هنا.

  • الأحرف التي يمكن ولا يمكن استخدامها في المعرفات (الأسماء)
    • أحرف ASCII
    • حرف Unicode
      • التطبيع (على سبيل المثال في الرياضيات)
  • تحقق مما إذا كانت السلسلة معرّفًا صالحًا:isidentifier()
  • الكلمات التي لا يمكن استخدامها كمعرفات (أسماء) (كلمات محجوزة)
  • الكلمات التي لا يجب استخدامها كمعرفات (أسماء)
  • اصطلاحات التسمية لـ PEP8

الوصف التالي موجود في Python 3 ، وقد يكون مختلفًا في Python 2.

الأحرف التي يمكن ولا يمكن استخدامها في المعرفات (الأسماء)

يشير إلى الأحرف التي يمكن ولا يمكن استخدامها كمعرفات (أسماء).

بالإضافة إلى ذلك ، على الرغم من وجود العديد من الأشياء التي يجب الكتابة عنها ، إلا أن كل ما تحتاج إلى تذكره هو ما يلي.

  • استخدم الأحرف الكبيرة والصغيرة والأرقام والشرطات السفلية.
  • لا يمكن أن يكون الحرف الأول (الأول) رقمًا.

أحرف ASCII

أحرف ASCII التي يمكن استخدامها كمعرفات (أسماء) هي أحرف أبجدية كبيرة وصغيرة (A ~ Z ، a ~ z) ، وأرقام (0 ~ 9) ، وشرطات سفلية (_). الأبجدية حساسة لحالة الأحرف.

AbcDef_123 = 100
print(AbcDef_123)
# 100

لا يمكن استخدام الرموز بخلاف الشرطات السفلية.

# AbcDef-123 = 100
# SyntaxError: can't assign to operator

أيضًا ، لا يمكن استخدام الأرقام في البداية (الحرف الأول).

# 1_abc = 100
# SyntaxError: invalid token

يمكن أيضًا استخدام الشرطات السفلية في البداية.

_abc = 100
print(_abc)
# 100

ومع ذلك ، لاحظ أن الشرطة السفلية في البداية قد يكون لها معنى خاص.

حرف Unicode

منذ Python 3 ، يمكن أيضًا استخدام أحرف Unicode.

変数1 = 100
print(変数1)
# 100

لا يمكن استخدام جميع أحرف Unicode ، وبناءً على فئة Unicode ، لا يمكن استخدام بعضها. على سبيل المثال ، لا يمكن استخدام الرموز مثل علامات الترقيم والرسوم التوضيحية.

# 変数。 = 100
# SyntaxError: invalid character in identifier

# ☺ = 100
# SyntaxError: invalid character in identifier

راجع الوثائق الرسمية لرموز فئة Unicode التي يمكن استخدامها.

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

التطبيع (على سبيل المثال في الرياضيات)

يتم تحويل أحرف Unicode إلى الصيغة الطبيعية NFKC للتفسير. على سبيل المثال ، يتم تحويل الأبجديات ذات العرض الكامل إلى أبجديات بنصف العرض (أحرف ASCII).

لاحظ أنه حتى إذا أظهر الكود المصدري عرضًا مختلفًا ، فسيتم اعتباره نفس الكائن وسيتم الكتابة فوقه.

ABC = 100
ABC = -100

print(ABC)
# -100

print(ABC)
# -100

print(ABC is ABC)
# True

تحقق مما إذا كانت السلسلة معرّفًا صالحًا: isidentifier ()

ما إذا كانت السلسلة صالحة أم لا كمعرف يمكن التحقق منها باستخدام أسلوب السلسلة isidentifier ().

إنها ترجع صوابًا إذا كانت صالحة كمعرف ، وخطأ إذا كانت غير صالحة.

print('AbcDef_123'.isidentifier())
# True

print('AbcDef-123'.isidentifier())
# False

print('変数1'.isidentifier())
# True

print('☺'.isidentifier())
# False

الكلمات التي لا يمكن استخدامها كمعرفات (أسماء) (كلمات محجوزة)

هناك بعض الكلمات (الكلمات المحجوزة) التي لا يمكن استخدامها كمعرفات حتى لو كانت سلاسل صالحة كمعرفات (أسماء).

نظرًا لأن الكلمة المحجوزة هي سلسلة صالحة كمعرف ، فإن isidentifier () ترجع true ، ولكن يحدث خطأ إذا تم استخدامها كمعرف.

print('None'.isidentifier())
# True

# None = 100
# SyntaxError: can't assign to keyword

للحصول على قائمة بالكلمات المحجوزة وللتحقق مما إذا كانت السلسلة كلمة محجوزة ، استخدم وحدة الكلمات الأساسية الخاصة بالمكتبة القياسية.

الكلمات التي لا يجب استخدامها كمعرفات (أسماء)

على سبيل المثال ، يمكن استخدام أسماء الوظائف المضمنة في Python كمعرفات ، بحيث يمكنك تعيين قيم جديدة لها كمتغيرات.

على سبيل المثال ، len () هي دالة مضمنة تُرجع عدد العناصر في قائمة أو عدد الأحرف في سلسلة.

print(len)
# <built-in function len>

print(len('abc'))
# 3

إذا قمت بتعيين قيمة جديدة لهذا الاسم len ، فسيتم استبدال الوظيفة الأصلية وتصبح غير قابلة للاستخدام. لاحظ أنه لن تتم طباعة أي خطأ أو تحذير عند تعيين قيمة جديدة.

print(len('abc'))
# 3

len = 100
print(len)
# 100

# print(len('abc'))
# TypeError: 'int' object is not callable

خطأ شائع آخر هو استخدام list = [0، 1، 2] ، مما يجعل من المستحيل استخدام list (). كن حذرا.

اصطلاحات التسمية لـ PEP8

يرمز PEP إلى اقتراح تحسين Python ، وهو مستند يصف الميزات الجديدة والجوانب الأخرى في Python.

PEP stands for Python Enhancement Proposal. A PEP is a design document providing information to the Python community, or describing a new feature for Python or its processes or environment.
PEP 1 — PEP Purpose and Guidelines | Python.org

PEP8 هو الثامن ، ويصف “دليل أسلوب كود Python” ، أي دليل أسلوب Python.

كما تم ذكر اصطلاحات التسمية.

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

  • وحدة
    • lowercase_underscore
    • أحرف صغيرة + شرطة سفلية
  • صفقة
    • lowercase
    • جميع الأحرف الصغيرة
  • فئات ، استثناءات
    • CapitalizedWords(CamelCase)
    • تكبير الحرف الأول من الكلمة ، بدون تسطير أسفل السطر
  • الوظائف والمتغيرات والطرق
    • lowercase_underscore
    • أحرف صغيرة + شرطة سفلية
  • ثابت
    • ALL_CAPS
    • الأحرف الكبيرة + الشرطة السفلية

ومع ذلك ، إذا لم يكن لدى مؤسستك اصطلاحات التسمية الخاصة بها ، فمن المستحسن اتباع PEP8.