چرا متود copy همیشه کپی واقعی نمیسازه؟
یکی از باگهایی که حتی برنامهنویسهای با تجربه هم گاهی باهاش روبهرو میشن، تفاوت بین Copy و Deep Copy هست
فرض کنید این لیست رو داریم:
data = [
["Yasin", "Ali"],
["Math", "Science"]
]
حالا ازش کپی میگیریم:
new_data = data.copy()
خیلیها فکر میکنن new_data کاملاً مستقل از data شده اما اینطور نیست
اگر این کار رو انجام بدیم:
new_data[0].append("Sina")
نتیجه:
print(data)
# خروجی 👇🏻
# [['Yasin', 'Ali', 'Sina'], ['Math', 'Science']]
چرا لیست اصلی هم تغییر کرد؟
چون copy() فقط لیست بیرونی رو کپی میکنه، ولی عناصر داخلش همچنان به همون آبجکتهای قبلی اشاره میکنن.
به این میگن Shallow Copy
-——————————————--
🎈اما راه حل؟
وقتی ساختارهای تو در تو دارید با از از deepcopy استفاده کنید
from copy import deepcopy
new_data = deepcopy(data)
حالا هر تغییری روی new_data بدید روی data اثری نداره
🔴 نکته مهم 🔴
اگر دادههای شما تو در تو نیستند، copy کاملاً کافی و سریعتره
اما اگر با لیست، دیکشنری یا آبجکتهای تو در تو کار میکنید استفاده اشتباه از copy میتونه باگ ایجاد کنه که وقتتون گرفته بشه
🔖 #Python #پایتون
👤 BʟᴀᴄᴋCᴀᴛ
💎 Channel: @DevelopixPython
t.me/DevelopixPython/177Translating to English…
9
3
1July 8, 2026 1.4K 6