"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية إنشاء نسخ مستقلة حقًا من الكائنات في بايثون؟

كيفية إنشاء نسخ مستقلة حقًا من الكائنات في بايثون؟

تم النشر بتاريخ 2024-11-16
تصفح:968

How to Create Truly Independent Copies of Objects in Python?

تكرار الكائنات في بايثون: دليل شامل

يعد إنشاء نسخ من الكائنات مهمة أساسية في برمجة بايثون، خاصة عند التعامل مع البيانات المعقدة الهياكل. تتعمق هذه المقالة في تعقيدات نسخ الكائنات في بايثون، مع التركيز بشكل خاص على إنشاء كائنات مستقلة لا تتأثر بالتغييرات التي تم إجراؤها على الأصل. في بايثون، هناك طريقتان أساسيتان لنسخ الكائنات: النسخ السطحي والنسخ العميق. يؤدي النسخ الضحل إلى إنشاء كائن جديد يشير إلى نفس الحقول غير القابلة للتغيير (على سبيل المثال، الأعداد الصحيحة والسلاسل) مثل الكائن الأصلي، ولكنه ينشئ نسخًا جديدة من الحقول القابلة للتغيير (على سبيل المثال، القوائم والقواميس).

على سبيل المثال، ضع في اعتبارك ما يلي مقتطف الكود:

original_list = [1, 2, 3] new_list = original_list[:] # نسخة ضحلة

بينما تظهر new_list و original_list ككائنين منفصلين، فإن أي تغييرات يتم إجراؤها على إحدى القائمة ستنعكس في القائمة الأخرى، حيث تشير كلاهما إلى نفس البيانات الأساسية.

original_list = [1, 2, 3]
new_list = original_list[:]  # Shallow copy

لإنشاء كائنات مستقلة حقًا، يجب علينا اللجوء إلى النسخ العميق. يتضمن ذلك إنشاء نسخة جديدة من كل حقل، بما في ذلك الهياكل المتداخلة القابلة للتغيير. توفر وظيفة Copy.deepcopy() في بايثون هذه الوظيفة.

دعونا نعدل مثالنا السابق:

نسخة الاستيراد original_list = [1، 2، [4، 5]] new_list = Copy.deepcopy(original_list)

الآن، إذا أجرينا تغييرًا على new_list، فلن يؤثر ذلك على original_list:

import copy

original_list = [1, 2, [4, 5]]
new_list = copy.deepcopy(original_list)
الاستنتاج

 من خلال الاستفادة من وظيفة Copy.deepcopy () ، يمكن للمبرمجين يمكن إنشاء نسخ مستقلة تمامًا من الكائنات، مما يضمن أن التغييرات التي يتم إجراؤها على أحد العناصر لا تؤثر على الآخر. يعد فهم الفرق بين النسخ السطحي والعميق أمرًا بالغ الأهمية للتلاعب الفعال بالكائنات في بايثون.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3