آدرس : تهران میدان فردوسی خیابان ایرانشهر بین سمیه و طالقانی مجتمع تجاری میلاد واحد 9

پشتیبانی 24 ساعته : 02188867940 – 09927674217

برای مشاهده لیست علاقه مندی ها وارد شوید!

مشاهده محصولات فروشگاه
0

هیچ محصولی در سبد خرید نیست.

ساختن کپی های عمیق

دسته بندی :اخبار سایت 26 فوریه 2023 علیرضا بابامرادی 448

بیایید مثال قبلی کپی کردن لیست را تکرار کنیم، اما با یک تفاوت مهم. این بار می‌خواهیم یک کپی عمیق با استفاده از تابع deepcopy() که در ماژول کپی تعریف شده است:>>> xs = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] >>> import copy >>> zs = copy.deepcopy(xs)هنگامی که xs و کلون zs آن را که ما با آن ایجاد کردیم بررسی می کنید copy.deepcopy()، خواهید دید که هر دو دوباره یکسان به نظر می رسند – فقط مانند مثال قبل:[[1, 2, 3], [4, 5, 6], [7, 8, 9]] >>> xs >>> zs [[1, 2, 3], [4, 5, 6], [7, 8, 9]]شی اصلی (xs)، خواهید دید که این اصلاح بر روی آن تأثیر نمی گذارد کپی عمیق (zs). با این حال، اگر تغییری در یکی از اشیاء فرزند در آن ایجاد کنید xs به صورت بازگشتی کلون شد، از جمله تمام اشیاء فرزند آن:>>> xs[1][0] = ‘X’ هر دو شی، اصل و کپی، این بار کاملاً مستقل هستند. [[1, 2, 3], [‘X’, 5, 6], [7, 8, 9]] >>> xs >>> zs [[1, 2, 3], [4, 5, 6], [7, 8, 9]]ممکن است بخواهید کمی وقت بگذارید و با مترجم پایتون بنشینید و همین الان با این مثال ها بازی کنید. کاغذ بسته بندی وقتی به تجربه دست می یابید، سرتان در اطراف کپی کردن اشیاء آسان تر است و با مثال ها دست اول بازی کنید. به هر حال، شما همچنین می توانید با استفاده از یک تابع در کپی های کم عمق ایجاد کنید اشیاء. ماژول کپی تابع copy.copy () کپی های کم عمقی از این در صورتی مفید است که بخواهید به طور واضح ارتباط برقرار کنید که در حال ایجاد یک هستید در جایی از کد خود کپی کنید. استفاده از copy.copy () به شما امکان می دهد این واقعیت را مشخص کنید. با این حال، برای مجموعه های داخلی بیشتر در نظر گرفته شده است پایتونیک به سادگی از لیست، دستور و تنظیم توابع کارخانه برای ایجاد استفاده می کند کپی های کم عمقسوالی که هنوز باید به آن پاسخ دهیم این است که چگونه می‌توانیم کپی‌هایی (شال کم و عمیق) از اشیاء دلخواه، از جمله کلاس‌های سفارشی ایجاد کنیم. بیایید حالا به آن نگاهی بینداز کپی کردن اشیاء دلخواه دوباره ماژول کپی به کمک ما می آید. آن copy.copy() and توابع copy.deepcopy() را می توان برای کپی کردن هر شی مورد استفاده قرار داد. یک بار دیگر، بهترین راه برای درک نحوه استفاده از اینها با a است آزمایش ساده من این را بر اساس کپی کردن لیست قبلی قرار خواهم داد مثال. بیایید با تعریف یک کلاس نقطه دو بعدی ساده شروع کنیم:def __init__(self, x, y): class Point: self.x = x def __repr__(self): self.y = y return f’Point({self.x!r}, {self.y!r})’پیاده سازی __repr__() تا بتوانیم به راحتی اشیا را بررسی کنیم از این کلاس در مفسر پایتون ایجاد شده است. امیدوارم موافق باشید که این خیلی ساده بود. الف اضافه کردم در مرحله بعد، یک نمونه Point ایجاد می کنیم و سپس (به صورت کم عمق) آن را کپی می کنیم. با استفاده از ماژول کپی: >>> b = copy.copy(a)اگر محتویات شی Point اصلی و (کم عمق) آن را بررسی کنیم کلون، ما آنچه را که انتظار داریم می بینیم:>>> a >>> a = Point(23, 42) Point(23, 42) Point(23, 42) >>> b >>> a is b Falseدر اینجا چیز دیگری وجود دارد که باید در نظر داشت. زیرا شی نقطه ما استفاده می کند انواع اولیه (ints) برای مختصات آن، هیچ تفاوتی بین آنها وجود ندارد یک کپی کم عمق و عمیق در این مورد. اما مثال را در آن بسط خواهم داد.

علیرضا بابامرادی

راه آسان‌تری برای ارتباط با کاربران‌مان پیدا کرده‌ایم :) عضویت در کانال

مطالب زیر را حتما بخوانید:

قوانین ارسال دیدگاه در سایت

  • چنانچه دیدگاهی توهین آمیز باشد تایید نخواهد شد.
  • چنانچه دیدگاه شما جنبه ی تبلیغاتی داشته باشد تایید نخواهد شد.
  • چنانچه از لینک سایر وبسایت ها و یا وبسایت خود در دیدگاه استفاده کرده باشید تایید نخواهد شد.
  • چنانچه در دیدگاه خود از شماره تماس، ایمیل و آیدی تلگرام استفاده کرده باشید تایید نخواهد شد.
  • چنانچه دیدگاهی بی ارتباط با موضوع آموزش مطرح شود تایید نخواهد شد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

لینک کوتاه:
0