Page 54 - 6734
P. 54
False
True
ArgSpec(args=['a', 'b'], varargs='args',
keywords='kwargs', defaults=(0,))
14 21
{'a': 1, 'args': (3,), 'b': 2, 'cf': <frame object at
0x0000000005F50930>, 'kwargs': {'x': 4}}
copy – копії об’єктів
Модуль copy призначений для створення поверхневих і
глибоких копій складених об’єктів [5, 19]. Функція copy створює
поверхневу копію шляхом копіювання посилань на атрибути
об’єкта. Функція deepcopy створює глибоку копію шляхом
рекурсивного створення окремих копій атрибутів об’єкта.
import copy
class A(object): pass # клас A
class B(object): pass # клас B
a=A() # об'єкт a
b=B() # об'єкт b
a.x=b # атрибут x
b.y=5 # атрибут y
copy_a=copy.copy(a) # поверхнева копія об'єкта
print a, a.x, a.x.y
print copy_a, copy_a.x, copy_a.x.y
copy_a=copy.deepcopy(a) # повністю незалежна глибока
копія об'єкта
print copy_a, copy_a.x, copy_a.x.y
<__main__.A object at 0x03653490> <__main__.B object
at 0x03653810> 5
<__main__.A object at 0x03653AD0> <__main__.B object
at 0x03653810> 5
<__main__.A object at 0x03653A70> <__main__.B object
at 0x03653B10> 5
53