0
我與它具有如下結構的腳本,一個很奇怪的問題:進口模塊,隨機設置爲無
import os
# ... some functions
def function_one():
...
def function_two():
if os.path.isdir(...):
最後一條語句有時會失敗,NoneType has no attribute 'path'
和偶然我發現的function_two
def function_two():
if os is None:
print function_one
打印None
。所以不僅os
是None
,而且function_one
也是None
。
我想重現錯誤但不知道在哪裏尋找原因,我沒有全局變量,我不修改sys.modules
。
有沒有人有想法os
可以變成None
?我是不是能夠模擬這種不使用全局變量名稱os
和function_one
...
是的,全局變量幾乎是這種情況發生的唯一方式。 FWIW,如果另一個模塊_imports_這個模塊,他們也可以猴子修補它的全局變量來將'os'和'function_one'設置爲'None' ... – mgilson 2014-10-09 14:39:55
當CPython關閉時,你會得到這種效果:它用None代替全局變量(主要是歷史的)原因。從解釋器關閉時運行的'__del__'方法調用函數嗎? – 2014-10-09 14:42:35
您使用的是什麼版本的Python?是否有代碼將'None'分配給這些名稱?你能展示更多的代碼嗎? – l04m33 2014-10-09 14:54:41