TGViewer
| کانال توسعه‌دهندگان پایتون | | کانال توسعه‌دهندگان پایتون | @developixpython · 7.7K subscribers
Post #177 1.64K
چرا متود 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
  • 👍 9
  • ❤ 3
  • 🔥 2
More from @developixpython
  1. Sep 30, 2026💠 نسخه جدید کتابخانه FastAPI منتشر شده است 🔸 ارتقا از نسخه 0.141.1 به 0.142.2 🔖 #fastap…
  2. Sep 8, 2026آرگومان پیش‌فرض لیست؛ باگ خفن ولی بی‌سر‌و‌صدا 😅 خیلی‌ها (حتی حرفه‌ای‌ها) یه زمانی این سوت…
  3. Sep 6, 2026🔥 پروژه: مهارت‌های تحقیق آکادمیک با Claude Code اگر برای پروژه‌های پایتونی مقاله، مستندات…
  4. Aug 24, 2026خیلی وقت‌ها با باگ‌های عجیب روبه‌رو می‌شویم که فقط به خاطر یک فاصلهٔ اضافی یا خط‌جدید ته ر…
  5. Aug 12, 2026🔥 پروژه: ‏DSPy فریم‌ورک برنامه‌نویسی LLM DSPy یه فریم‌ورک پایتونی از آزمایشگاه NLP اس…
  6. Aug 9, 2026مدیریت درست resource مثل فایل، connection دیتابیس یا lock، کلی باگ و Memory Leak بالقوه را…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →