تقنية

copy_location في بايثون: هل ينتقل موقع الأبناء أيضًا؟

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

قارن موقع الأب وموقع ابنه بعد النقل. [1] [2]

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

لا؛ تغير موقع الأب وحده في المثال. [1] [2]

  • نسخنا موقع الإسناد a إلى الإسناد b. [1] [2]
  • المعاد هو b نفسه؛ الفحص True. [1] [2]
  • موقع b صار (2,4,2,10). [1] [2]
  • موقع b.value بقي (1,4,1,5). [1] [2]
  • فحص 3.12.14؛ دون تشغيل النص أو ترجمة الشجرة. [1] [2]

المثال

نسخنا موقع الإسناد a إلى الإسناد b. [1] [2]

import ast
a=ast.parse("if True:\n    leaf=9\n").body[0].body[0]
b=ast.parse("bud=4\n").body[0]
print(ast.copy_location(b,a)is b)
print((b.lineno,b.col_offset,b.end_lineno,b.end_col_offset))
print((b.value.lineno,b.value.col_offset,b.value.end_lineno,b.value.end_col_offset))

[1] [2]

المعاد والموقع

المعاد هو b نفسه؛ الفحص True. [1] [2]

موقع b صار (2,4,2,10). [1] [2]

الترتيب: سطر البداية، عمودها، سطر النهاية، عمودها. [1] [2]

النتيجة: True، (2,4,2,10)، (1,4,1,5). [1] [2]

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

الابن والنطاق

موقع b.value بقي (1,4,1,5). [1] [2]

قيمة الابن بقيت 4؛ لم ننسخ بيانات الإسناد. [1] [2]

فحص 3.12.14؛ دون تشغيل النص أو ترجمة الشجرة. [1] [2]

المراجع

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

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

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