2016-12-29 127 views

回答

1

在這種情況下,'reload'會做什麼?

那要看是什麼utils不...例如,如果進口utils有副作用,那麼效果會再次發生。


另請注意,在任何生產代碼中使用reload絕對是您想要避免的。主要的原因在於reload存在是交互使用...

  • 加載模塊
  • 測試一下,看看錯誤
  • 編輯模塊
  • 刷新模塊
  • 測試出來
  • ...
+0

內置的功能爲什麼「副作用」需要發生再次? – user697911

+0

@ user697911 - 我不知道爲什麼副作用需要再次發生:-)。我甚至不知道'utils'是否有副作用。 – mgilson

+0

「編輯」模塊後,必須再次運行模塊,並且在運行模塊時,第一個「導入使用情況」將再次執行。爲什麼你需要重新加載(utils)來獲得效果? – user697911

2

找出來的最佳方法是檢查reload document,它說:

  1. Python模塊的代碼重新編譯和模塊級代碼重新執行,定義一組新的這必將對名稱在模塊的字典對象。擴展模塊的初始化函數不是第二次調用。

  2. 與Python中的所有其他對象一樣,舊對象僅在其引用計數降至零後纔會回收。

  3. 將模塊名稱空間中的名稱更新爲以指向任何新的或更改的對象。

  4. 其他引用舊物(如外部模塊名稱)不反彈來引用新對象,必須在如果需要他們發生的每個命名空間進行更新。

相關問題