استفاده از متد copy
کاربرد متد copy در پایتون
در زبان برنامهنویسی پایتون، متد copy() یکی از ابزارهای ضروری برای کار با دیکشنریها محسوب میشود. این متد به شما امکان میدهد یک کپی مستقل از دیکشنری اصلی ایجاد کنید تا تغییرات روی کپی، تأثیری روی نسخه اصلی نداشته باشد.
توجه: استفاده نادرست از کپیگیری میتواند منجر به خطاهای منطقی در برنامه شود. همیشه نوع کپیگیری (سطحی یا عمیق) را با توجه به نیاز انتخاب کنید.
تفاوت کپی سطحی و عمیق
در پایتون دو نوع کپیگیری وجود دارد که باید به تفاوتهای آنها توجه ویژه داشت:
- کپی سطحی (Shallow Copy): فقط اشیا سطح اول را کپی میکند و برای اشیا تو در تو از ارجاع استفاده مینماید
- کپی عمیق (Deep Copy): تمام سطوح دیکشنری را به صورت مستقل کپی میکند
متد | کاربرد | مثال |
---|---|---|
copy() | کپی سطحی دیکشنری | new_dict = old_dict.copy() |
deepcopy() | کپی عمیق دیکشنری | from copy import deepcopy |
مثالهای کاربردی
برای درک بهتر عملکرد متد copy، به مثال زیر توجه کنید:
original = {'name': 'Ali', 'age': 30, 'skills': ['Python', 'SQL']} copied = original.copy() copied['age'] = 31 copied['skills'].append('Django') print(original) # {'name': 'Ali', 'age': 30, 'skills': ['Python', 'SQL', 'Django']} print(copied) # {'name': 'Ali', 'age': 31, 'skills': ['Python', 'SQL', 'Django']}
همانطور که مشاهده میکنید، تغییر مقدار سادهای مثل age فقط روی کپی اثر گذاشته، اما تغییر لیست skills که یک شی تو در تو است، روی هر دو نسخه تأثیر گذاشته است.
برای یادگیری جامعتر درباره کپی دیکشنری در پایتون میتوانید اینجا را بزنید و به آموزش کامل دسترسی پیدا کنید.
نکات کلیدی در استفاده از copy
- برای دیکشنریهای ساده (بدون اشیا تو در تو)، متد copy() کافی است
- در صورت وجود اشیا تغییرپذیر تو در تو (مثل لیستها یا دیکشنریهای دیگر) باید از deepcopy استفاده کنید
- کپیگیری با عملگر = فقط یک ارجاع ایجاد میکند و کپی واقعی محسوب نمیشود
- متد copy() برای تمام انواع تغییرپذیر (mutable) مانند لیستها و مجموعهها نیز کاربرد دارد
به خاطر داشته باشید که انتخاب بین copy() و deepcopy() تأثیر مستقیمی بر عملکرد برنامه دارد. کپی عمیق منابع بیشتری مصرف میکند اما در موارد لازم، استفاده از آن اجتنابناپذیر است.