Python列表:[:]的用法

时间:2017-04-02 05:36:42

标签: python list contextmanager

当我阅读 Python Essential Reference 一书的第5章时,我在示例 ListTransaction 中遇到了一些问题。这是原始代码:

 class ListTransaction(object):
        def __init__(self,thelist):
            self.thelist=thelist
        def __enter__(self):
            self.workingcopy=list(self.thelist)
            return self.workingcopy
        def __exit__(self,type,value,tb):
            if type is None:
                self.thelist[:]=self.workingcopy
            return False


items=[1,2,3]
with ListTransaction(items) as working:
    working.append(4)
    working.append(5)
print(items) #[1,2,3,4,5]

它按预期工作。但如果我省略[:]定义中的__exit__(),即第9行变为

 self.thelist=self.workingcopy

然后输出

[1,2,3].

那么列表之后是​​否存在 [:] 之间的区别是什么?

0 个答案:

没有答案