تقنية

iter_fields في بايثون: هل كل قيمة يعيدها عقدة؟

العقدة وقيم الحقول
تفسير توضيحي [1] [2]

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

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

لا؛ يعيد المثال قيمتين ليستا عقدتين. [1] [2]

  • الكائن n عقدة Constant: True. [1] [2]
  • الحقل value قيمته 4 ونوعها int. [1] [2]
  • الحقل kind قيمته None ونوعها NoneType. [1] [2]
  • قائمة iter_child_nodes(n) فارغة: []. [1] [2]
  • فحص 3.12.14؛ عقدة مؤلفة دون تشغيل نص برمجي. [1] [2]

المثال

الكائن n عقدة Constant: True. [1] [2]

import ast
n=ast.Constant(value=4)
print(isinstance(n,ast.AST))
print([(k,type(v).__name__)for k,v in ast.iter_fields(n)])
print(list(ast.iter_child_nodes(n)))

[1] [2]

قيم الحقول

الحقل value قيمته 4 ونوعها int. [1] [2]

الحقل kind قيمته None ونوعها NoneType. [1] [2]

يعرض iter_fields اسم الحقل وقيمته؛ ليس مرشحًا للعقد فقط. [1] [2]

العقد الأبناء

قائمة iter_child_nodes(n) فارغة: []. [1] [2]

النتيجة: وجود عقدة Constant لا يعني وجود عقد أبناء في هذا المثال. [1] [2]

الحقول والأبناء
تفسير توضيحي [1] [2]

النطاق

فحص 3.12.14؛ عقدة مؤلفة دون تشغيل نص برمجي. [1] [2]

لا تعمم القائمة الفارغة على بقية أنواع العقد. [1] [2]

المراجع

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

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

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