def deepcopy(cls):
if isinstance(cls, dict):
return {k: deepcopy(v) for k, v in cls.items()}
elif isinstance(cls, list):
return [deepcopy(item) for item in cls]
elif isinstance(cls, tuple):
return tuple([deepcopy(item) for item in cls])
else:
return cls
顺便插入type,和instance的区别
>>> isinstance(2, int)
True
>>> isinstance("lala", str)
True
>>> isinstance([1,2], list)
True
>>> isinstance(1, (list, int, tuple))
True
注意
isinstance(1, (list, int, tuple)) 符合一条就行
下面说说他们的区别
isinstance() 与 type() 区别:
type() 不会认为子类是一种父类类型,不考虑继承关系。
isinstance() 会认为子类是一种父类类型,考虑继承关系。
就是考虑不考虑继承关系
如果要判断两个类型是否相同推荐使用 isinstance()。
class A(object):
pass
class B(A):
pass
print(isinstance(A(), A)) # True
print(type(A()) == A) # True
print(isinstance(B(), A)) # True
print(type(B()) == A) # True