[問題] 寫法疑問

看板Python作者 (夜殘狼)時間11年前 (2014/03/19 17:15), 編輯推噓5(509)
留言14則, 4人參與, 最新討論串1/2 (看更多)
各位好,最近在看 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

03/19 19:11, , 1F
sys.meta_path = 指指向新的 list。
03/19 19:11, 1F

03/19 19:11, , 2F
sys.meta_path[:] 更新這個 list
03/19 19:11, 2F

03/19 19:13, , 3F
舊的 list 在利用 sys.meta_path = 指向新的之後
03/19 19:13, 3F

03/19 19:14, , 4F
不是會被回收嗎?(如果沒有別的變數指向他)
03/19 19:14, 4F

03/19 19:15, , 5F
會有什麼區別嗎?
03/19 19:15, 5F

03/19 19:37, , 6F
目前想到唯一理由是避免有變數指向舊的物件,而導致不一
03/19 19:37, 6F

03/19 19:39, , 7F
致>
03/19 19:39, 7F

03/19 21:43, , 8F
難道是thread issue?
03/19 21:43, 8F

03/20 00:25, , 9F

03/20 00:34, , 10F
看了也參不透這麼做的真意,要不要寫信問問作者。
03/20 00:34, 10F

03/20 00:34, , 11F
Github 上面也沒有 issue 跟這有關。
03/20 00:34, 11F

03/20 00:37, , 12F
我猜應該就是 ya790206 的理由, 也有可能考慮 threading
03/20 00:37, 12F

03/20 00:37, , 13F
預防 race condition 吧, 反正就是這樣比較不會出包
03/20 00:37, 13F

03/20 22:37, , 14F
來 Taipei.py 分享吧
03/20 22:37, 14F
文章代碼(AID): #1JAM0LRX (Python)
討論串 (同標題文章)
以下文章回應了本文
1
3
完整討論串 (本文為第 1 之 2 篇):
1
3
5
14
文章代碼(AID): #1JAM0LRX (Python)