copy
函数:
def copy(self):
if self.__class__ is UserDict:
return UserDict(self.data.copy())
import copy
data = self.data
//why use try? use return copy.copy(self) instead
try:
self.data = {}
c = copy.copy(self)
finally:
self.data = data
c.update(self)
return c
为什么try-finally
在这里使用? self.data
会先被清除吗?什么是将在这里提出的例外?
答案 0 :(得分:0)
如果忽略try
/ except
,则代码为::
data = self.data
self.data = {}
c = copy.copy(self)
self.data = data
c.update(self)
请注意self.data = {}
行。出于某种原因,编写此代码的人认为如果在调用self.data
之前将copy.copy()
设置为空字典,则副本将更好地工作,然后使用{{1}复制实际数据}。
update()
的要点是确保finally
恢复到原始值,无论self.data
中发生什么。