Pythonでこれが奇妙であることがわかりました:
class SomeClass():
def __init__(self):
pass
a = [SomeClass()]
b = copy.deepcopy(a)
出力:
>>> a
[<__main__.Some instance at 0x10051b1b8>]
>>> b
[<__main__.Some instance at 0x10051b092>]
これは予想どおりです。deepcopy によってSomeClass()
b の新しいオブジェクトが作成されました。
しかし、もし、
f = lambda x:x+1
a = [f]
b = copy.deepcopy(a)
私は得る:
>>> a
[<function <lambda> at 0x10056e410>]
>>> b
[<function <lambda> at 0x10056e410>]
2 番目のケースでディープコピーが新しいラムダ インスタンスを作成しないのはなぜですか? それはラムダ関数がアトミックであることを意味しますか?