看板 Python 關於我們 聯絡資訊
各位好,最近在看 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
ya790206:sys.meta_path = 指指向新的 list。 03/19 19:11
ya790206:sys.meta_path[:] 更新這個 list 03/19 19:11
birdhackor:舊的 list 在利用 sys.meta_path = 指向新的之後 03/19 19:13
birdhackor:不是會被回收嗎?(如果沒有別的變數指向他) 03/19 19:14
birdhackor:會有什麼區別嗎? 03/19 19:15
ya790206:目前想到唯一理由是避免有變數指向舊的物件,而導致不一 03/19 19:37
ya790206:致> 03/19 19:39
timTan:難道是thread issue? 03/19 21:43
timTan:http://legacy.python.org/dev/peps/pep-0302/ 正在看.. 03/20 00:25
timTan:看了也參不透這麼做的真意,要不要寫信問問作者。 03/20 00:34
timTan:Github 上面也沒有 issue 跟這有關。 03/20 00:34
uranusjr:我猜應該就是 ya790206 的理由, 也有可能考慮 threading 03/20 00:37
uranusjr:預防 race condition 吧, 反正就是這樣比較不會出包 03/20 00:37
timTan:來 Taipei.py 分享吧 03/20 22:37