افصل بناء الشجرة عن قبول الترجمة. [1] [2]
الخلاصة السريعة
المثال
import ast
s="if True:\n return 7\n"
t=ast.parse(s)
r=t.body[0].body[0]
print(type(r).__name__)
try:
compile(t,"owned","exec")
except SyntaxError:
print("SyntaxError")النطاق خطوة أخرى
المصدر يطلب PyCF_ONLY_AST لبناء الشجرة. الترجمة التالية تفحص النطاق؛ كتلة if لا تصنع دالة. المخرجان Return وSyntaxError. [1] [2]

الضبط المقابل
وضعنا if نفسه داخل def f(): في ضبط مستقل؛ نجحت الترجمة إلى كائن code. نجاح هذه المرحلة لا يشغل النص؛ لم ننفذه. [1] [2]
المراجع
- Python 3.12: parsing versus scope checks
- CPython 3.12.14: AST-only parse wrapper
- موضوع تك: لغة بايثون — مفردات
- موضوع تك: تطبيقات بايثون — مفردات
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
