تقنية

exact_type في بايثون: هل OP يميز العاملين؟

عاملان لهما نوع OP
نوع عام. [1] [2]

نوع الرمز العام لا يحدد العامل وحده. [1] [2]

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

لا؛ العاملان هنا من نوع OP، لكن exact_type يميزهما. [1] [2]

  • نحلل الشيفرة الصالحة a=7+2. [1] [2]
  • نختار رمزي = و+. [1] [2]
  • اسما النوع العام: OP وOP. [1] [2]
  • اسما النوع الدقيق: EQUAL وPLUS. [1] [2]
  • اختبرنا 3.12.14؛ قراءة الخاصية لا تغير الرمزين. [1] [2]

المثال

import io,tokenize as t
s='a=7+2\n'
z=list(t.generate_tokens(io.StringIO(s).readline))
ops=[x for x in z if x.type==t.OP]
print([t.tok_name[x.type] for x in ops])
print([t.tok_name[x.exact_type] for x in ops])

[1] [2]

ما الذي تحدده الخاصية؟

المصدر هنا يقرأ نص العامل في جدول الأنواع الدقيقة، بدل تغيير حقل type. المخرجات ['OP', 'OP'] ثم ['EQUAL', 'PLUS']. أما رمز الاسم a، فنوعه العام والدقيق NAME. [1] [2]

الإسناد EQUAL والجمع PLUS
نوع دقيق. [1] [2]

النطاق

نستخدم شيفرة صالحة؛ سلوك المحلل مع الشيفرة غير الصالحة ليس ضمانًا. لا نستنتج قيمة الناتج الحسابي من اسم الرمز، ولا نخلط هذه الخاصية بإعادة بناء المسافات الأصلية. [1] [2]

المراجع

  1. Python 3.12: TokenInfo.exact_type
  2. CPython 3.12.14: tokenize.py
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

للتوسع: بحث عن لغات البرمجة

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