作者birdhackor (夜残狼)
看板Python
标题[问题] 写法疑问
时间Wed Mar 19 17:14:57 2014
各位好,最近在看 flask 原始码的时候看到一些写法我很好奇为甚麽要这样写
例如
https://github.com/mitsuhiko/flask/blob/master/flask/exthook.py
49 行
sys.meta_path[:] = [x for x in sys.meta_path if self != x] + [self]
为什麽用 sys.meta_path[:] = ... 而不是 直接写 sys.meta_path = ... 就好呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.116.157.251
1F:推 ya790206:sys.meta_path = 指指向新的 list。 03/19 19:11
2F:→ ya790206:sys.meta_path[:] 更新这个 list 03/19 19:11
3F:→ birdhackor:旧的 list 在利用 sys.meta_path = 指向新的之後 03/19 19:13
4F:→ birdhackor:不是会被回收吗?(如果没有别的变数指向他) 03/19 19:14
5F:→ birdhackor:会有什麽区别吗? 03/19 19:15
6F:推 ya790206:目前想到唯一理由是避免有变数指向旧的物件,而导致不一 03/19 19:37
7F:→ ya790206:致> 03/19 19:39
8F:推 timTan:难道是thread issue? 03/19 21:43
10F:推 timTan:看了也参不透这麽做的真意,要不要写信问问作者。 03/20 00:34
11F:→ timTan:Github 上面也没有 issue 跟这有关。 03/20 00:34
12F:→ uranusjr:我猜应该就是 ya790206 的理由, 也有可能考虑 threading 03/20 00:37
13F:→ uranusjr:预防 race condition 吧, 反正就是这样比较不会出包 03/20 00:37
14F:推 timTan:来 Taipei.py 分享吧 03/20 22:37