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
   49   50   51   52   53   54   55   56   57   58   59