تقنية

isidentifier في بايثون: لماذا ينجح class ويفشل الإسناد إليه؟

class تعطي True مع isidentifier ومع iskeyword.
اختباران مختلفان.

isidentifier وحدها لا تكفي لاختيار اسم متغير؛ قد يكون الاسم كلمة محجوزة. [1]

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

افحص الحجز أيضًا باستخدام keyword.iskeyword. [1]

  • isidentifier وحدها لا تكفي لاختيار اسم متغير؛ قد يكون الاسم كلمة محجوزة. [1]
  • class كلمة محجوزة؛ isidentifier تختبر شكل المعرّف. بعد import keyword، keyword.iskeyword تختبر الحجز. [1]
  • مثال مؤلف على CPython 3.12.14: s="class"؛ s.isidentifier() تعطي True. [1]
  • keyword.iskeyword(s) تعطي True؛ تجهيز جملة class=7 للتنفيذ يرفع SyntaxError. [1]
  • مع s="item2"، النتيجتان True ثم False؛ جملة item2=7 تُنفّذ وتخزن 7. [1]

فحص لا يكفي

isidentifier وحدها لا تكفي لاختيار اسم متغير؛ قد يكون الاسم كلمة محجوزة. [1]

الشكل والحجز

class كلمة محجوزة؛ isidentifier تختبر شكل المعرّف. بعد import keyword، keyword.iskeyword تختبر الحجز. [1]

نتيجة فحص الشكل

مثال مؤلف على CPython 3.12.14: s="class"؛ s.isidentifier() تعطي True. [1]

s.isidentifier() -> True [1]

جملة class=7 ترفع SyntaxError، وجملة item2=7 تخزن 7.
جملتان مختبرتان.

الحجز والإسناد

keyword.iskeyword(s) تعطي True؛ تجهيز جملة class=7 للتنفيذ يرفع SyntaxError. [1]

keyword.iskeyword(s) -> True [1]

مع s="item2"، النتيجتان True ثم False؛ جملة item2=7 تُنفّذ وتخزن 7. [1]

المراجع

  1. Python — isidentifier والحجز

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

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