Sobes.tech
Junior
200

Қабаттасу көшірмесі дегеніміз не?

AI-дан жауап

sobes.tech AI

Терең емес көшірме (shallow copy) жаңа күрделі объект құрады, бірақ оған салынған объектілердің көшірмесін жасамайды. Оның орнына, түпнұсқа объектінің салынған объектілеріне сілтемелер көшіріледі.

Негізгі тұстар:

  • Жаңа жинақ (тізім, сөздік, жиын) құрады.
  • Жаңа жинақтың элементтері түпнұсқа жинақтың сол элементтеріне сілтемелер.
  • Бір көшірмедегі салынған объектілерді өзгерту басқа көшірмеде де байқалады.
  • Бір көшірмедегі жинақты (қосу/жою) өзгерту басқаға әсер етпейді.

Іске асырулар:

  • .copy() әдісі тізімдер, сөздіктер, жиындар үшін.
  • copy модулінен copy.copy() функциясы.
  • Тізімдер үшін кесу әдісі [:].
# Тізіммен мысал
original_list = [[1, 2], 3]
shallow_copy_list = original_list.copy()

print(f"Түпнұсқа: {original_list}")
print(f"Терең емес көшірме: {shallow_copy_list}")
print(f"Салынған тізімдердің бірдейлігі: {original_list[0] is shallow_copy_list[0]}") # Шын - сілтемелер бірдей

original_list[0][0] = 99 # Салынған тізімді өзгерту

print(f"Түпнұсқа өзгергеннен кейін: {original_list}")
print(f"Көшірме өзгергеннен кейін: {shallow_copy_list}") # Екі көшірмеде де өзгеріс байқалады

original_list.append(4) # Жинақты өзгерту

print(f"Түпнұсқа append-тан кейін: {original_list}")
print(f"Көшірме append-тан кейін: {shallow_copy_list}") # Тек түпнұсқаға әсер етеді
# copy.copy() мысалы
import copy

original_dict = {'a': [1, 2], 'b': 3}
shallow_copy_dict = copy.copy(original_dict)

print(f"Түпнұсқа: {original_dict}")
print(f"Терең емес көшірме: {shallow_copy_dict}")
print(f"Салынған тізімдердің бірдейлігі: {original_dict['a'] is shallow_copy_dict['a']}") # Шын

original_dict['a'][0] = 99 # Салынған тізімді өзгерту

print(f"Түпнұсқа өзгергеннен кейін: {original_dict}")
print(f"Көшірме өзгергеннен кейін: {shallow_copy_dict}") # Екіде де өзгеріс байқалады