نسخ السياق لا ينسخ كل قيمة نسخًا عميقًا. [1] [2]
الخلاصة السريعة
النسخة تشارك القائمة أولًا؛ إسناد قائمة جديدة يغير ربط النسخة وحدها. [1] [2]
المثال
from contextvars import (
ContextVar,Context,copy_context)
v=ContextVar('own')
def demo():
v.set(['bud'])
copied=copy_context()
copied.run(
lambda:v.get().append('leaf'))
print(v.get())
copied.run(v.set,['stone'])
print(v.get(),copied[v])
Context().run(demo)قيمة وربط
المصدر هنا ينسخ السياق سطحيًا. تطبع الإضافة ['bud', 'leaf']، ثم يطبع الإسناد هذه القائمة و['stone']. تعديل الكائن المشترك يختلف عن استبدال الربط عبر set. [1] [2]

النطاق
نشغل المثال داخل Context() فارغ. لا نختبر النسخ العميق أو التزامن أو الأداء؛ مشاركة القيمة لا تعني أن كل إسناد ينتقل إلى الأصل. [1] [2]
المراجع
- Python 3.12: Context copies and run
- CPython 3.12.14: context.c
- موضوع تك: لغة بايثون — مفردات
- موضوع تك: تطبيقات بايثون — مفردات
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
