تقنية

symtable في بايثون: هل ظهور الاسم يثبت تنفيذ الإسناد؟

الاسم في الجدول والقاموس
إسناد داخل شرط كاذب. [1] [2]

نقارن أسماء الجدول بنتيجة تشغيل نص مؤلف. [1] [2]

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

لا؛ ظهور الاسم ليس سجل تنفيذ. [1] [2]

  • الإسناد r=1 داخل شرط if False. [1] [2]
  • يظهر r في get_identifiers؛ المقارنة True. [1] [2]
  • بعد تنفيذ نصنا بقاموس جديد، وجود r فيه False. [1] [2]
  • النمط exec في طلب الجدول لا ينفذ الإسناد. [1] [2]
  • OWN تسمية للمصدر؛ لا نقرأ ملفًا. [1] [2]
  • اختبرنا 3.12.14 دون نطاقات متداخلة أو استخراج قيم. [1] [2]

المثال

import symtable as s
src='if False:\n r=1'
t=s.symtable(src,'OWN','exec')
print('r' in t.get_identifiers())
g={}
exec(src,g)
print('r' in g)

[1] [2]

المخرجان True ثم False. [1] [2]

الجدول والتنفيذ

الجدول يصف أسماء المصدر. الشرط الكاذب يمنع إسناد r عند تشغيل نصنا. [1] [2]

طلب الجدول ثم تشغيل النص
عمليتان للمقارنة. [1] [2]

طلب الجدول منفصل عن exec(src,g) الذي نفذناه للمقارنة؛ اسم النمط لا يحول التحليل إلى تشغيل. [1] [2]

حدود المثال

مصدر مؤلف في الذاكرة. لم نفحص نطاقات متداخلة أو نستخرج قيمًا أو نختبر كل الإصدارات. [1] [2]

المراجع

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

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