سلام . من محمد جواد حق بیگیم دانش آموز کلاس هشتم تیزهوشان(تیزهوشان انصافا خیلی سخته) . عاشق برنامه نویسیم و امیدوارم حالتون خوب باشه:)
کپی و دیپ کپی در پایتون
سلام به همتون.محمدجواد حق بیگی هستم و اومدیم با یه آموزش جدید در این دفعه قراره کپی و دیپ کپی رو یادتون بدم که حلال خیلی از مشکلاتتونه.
اول بیاید با یک مثال شروع کنیم
a = 1
b = a
b += 1
print(a)
خب مطمئن هستیم که عدد ۱ رو پرینت میکنه ولی:
a = [1,2]
b = a
b.append(3)
print(a)
خب شما احتمالا فکر می کنید خروجی [1,2] هست ولی اشتباه می کنید و خروجی [1,2,3] هستش.
خوب ولی اگه از کپی و دیپ کپی استفاده کنیم:
import copy
a = [1,2]
b=copy.copy(a)
b.append(3)
print(a)
خب الان خروجی دو هست و همین قضیه برای دیپ کپی هم برقراره
import copy
a = [1,2]
b = copy.deepcopy(a)
print(a)
#output -- > [1,2]
حالا فرق اینها چیه(copyو deepcopy و حالت معمولی)؟
assignment:
import copy
a = [1,2,3]
b = [4,5,6]
c = [a,b]
d = c
print(id(d) == id(c)) # --> True
print(id(d[0]) == id(c[0])) # --> True
این کد پاسخ درست می دهد چون d همان c است. و همچنین d[0] همان c[0] است.
copy:
import copy
a = [1,2,3]
b = [4,5,6]
c = [a,b]
d = copy.copy(c)
print(id(d) == id(c)) # --> False
print(id(d[0]) == id(c[0])) # --> True
اولی کد پاسخ False می دهد چون d یک لیست جدید است ولی دومی پاسخ True است چون که در copy.copy فقط خود لیست کپی می شود و محل اجزای داخل آن در رم برابر است مثلا محل c[0] و d[0] در رم با هم برابر است.
deepcopy:
import copy
a = [1,2,3]
b = [4,5,6]
c = [a,b]
d = copy.deepcopy(c)
print(id(d) == id(c)) # --> False
print(id(d[0]) == id(c[0])) # --> False
اولی کد پاسخ False می دهد چون d یک لیست جدید است و دومی هم پاسخ False می دهد چون که در deepcopy هم اجزا و هم خود لیست کپی می شوند و محل همه انها در رم متفاوت است.
به عنوان مثال اگر id(d[0])در 0x72b9df992000 رم قرار داشته باشد id(c[0]) در 0x742f53595f40 قرار دارد.
ممنون از اینکه این مطلب رو خوندید یادتون نره به سایت هم سر بزنید(البته هنوز ناقصه) با تشکر از همتون
لینک:https://mohammadjavad12.github.io/irnelm
خداحافظ.
مطلبی دیگر از این انتشارات
اموزش ساخت پیام رسان با پایتون
مطلبی دیگر از این انتشارات
اموزش کنترل موس با پایتون
مطلبی دیگر از این انتشارات
اموزش pyqt قسمت 4