[問題] 寫法疑問

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

Links booklink

Contact Us: admin [ a t ] ucptt.com