在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>]
这和预期的一样——deepcopySomeClass()
为 b 创建了新对象。
但如果,
f = lambda x:x+1
a = [f]
b = copy.deepcopy(a)
我得到:
>>> a
[<function <lambda> at 0x10056e410>]
>>> b
[<function <lambda> at 0x10056e410>]
为什么 deepcopy 在第二种情况下不创建新的 lambda 实例?这是否意味着 lambda 函数是原子的?