Python模塊也是對象。所以,我想它可能是可能測試一個給定的對象是一個模塊(/包)是這樣的:如何測試一個Python對象是否是一個模塊?
>>> import sys, os, my_module
>>> isinstance(sys, ModuleClass)
True
>>> isinstance(os, ModuleClass)
True
>>> isinstance(my_module, ModuleClass)
True
>>> isinstance(5, ModuleClass)
False
除了「ModuleClass」就是我發明了一個名字,我不能在該文檔中找到如果像它這樣的東西真的存在,它叫什麼。
有這樣的課程嗎?這是否在我錯過的文檔中?
如果沒有,是否有另一種方法來查看對象是否是一個模塊?更好的是,如果它是實現不可知的。
(我使用Python 2.7,但我想,如果3.x中有一些新的解決方案也將是有趣的瞭解。)
這聽起來像hasattr(obj, '__package__')
(PEP 366)是可能的權宜之計,但AFAICT沒有什麼特別的理由可以確定未來的更新不會將__package__
放入其他完全不相關的對象中。我更喜歡一種感覺更健壯的解決方案。
這是inspect.ismodule'究竟是如何定義的'。 – Blender
謝謝你們!這兩個解決方案都很棒! – hemflit