我已經看到術語__loader__
圍繞着一些Python文件,除了一些關於它的目的的簡要描述外,我找不到任何文檔,但他們仍然沒有提供足夠的信息讓我得到一個很好的理解的。我所知道的是,它與導入模塊有關,除了我完全處於虧損之外。它有什麼作用?何時使用?我如何使用它呢?Python的__loader__,它是什麼?
6
A
回答
9
什麼是
__loader__
?
__loader__
是通過其加載程序在導入的模塊上設置的屬性。訪問它應該返回加載器對象本身。
在3.3之前的Python版本中,__loader__
未由內置的導入機制設置。相反,該屬性僅在使用自定義加載器導入的模塊上可用。
但是,由於PEP 0302,此功能在Python 3.3中更改。現在,__loader__
可每次導入模塊:
>>> # Python 3.3 interpreter
>>> import os
>>> os.__loader__
<_frozen_importlib.SourceFileLoader object at 0x01F86370>
>>>
什麼是裝載機?
A loader是查找器返回的對象。它使用其load_module()
方法將模塊加載到內存中。 importlib.abc.Loader
是加載器的抽象基類的一個例子。
什麼是取景器?
A finder是一個對象,它使用其find_module()
方法來嘗試查找模塊的加載程序。 importlib.abc.Finder
是查找器的抽象基類的一個例子。不過請注意,它已被棄用,有利於importlib.abc.MetaPathFinder
和importlib.abc.PathEntryFinder
。
我如何使用它,如果在所有?
__loader__
的主要用途是內省。然而,還有另外兩個常見的用途:
__loader__
可用於收集特定模塊的加載數據。在Python版本3.3之前,
__loader__
可以用hasattr
用來檢查一個模塊是否被使用內置進口機械進口:>>> # Python 3.2 interpreter >>> import os >>> hasattr(os, '__loader__') False >>>
如果
hasattr(os, '__loader__')
已經True
返回,這將意味着使用定製加載程序導入os
模塊。由於沒有,這意味着該模塊是使用內置的導入機器導入的。注:以上測試不會在Python工作3.3+因爲通過PEP 0302.
相關問題
- 1. 什麼是python中的類,它做什麼,它爲什麼需要它?
- 2. 集成的python調試 - 它是什麼?
- 3. * =在Python中的含義是什麼,它爲什麼用於=?
- 4. Python/C「defs」文件 - 它是什麼?
- 5. 的Python - 什麼是+
- 6. Mandrill應用程序 - 它是什麼,它的API key是什麼
- 7. 什麼是MIME?它到底是什麼?
- 8. python中的surface.blit()函數是什麼?它有什麼作用?怎麼運行的?
- 9. MethodHandle - 它是什麼?
- 10. ImageCaptureService.app它是什麼?
- 11. pthread_cleanup_pop_restore - 它是什麼?
- 12. PTHREAD_MUTEX_INITIALIZER,它是什麼?
- 13. JavaObjectModel。它是什麼?
- 14. KeyChain - 它是什麼?
- 15. in()...它是做什麼的?
- 16. JavaVM.framework。它是什麼?我怎麼用它?
- 17. Javascript「窗口」:它的目的是什麼?它有什麼作用?
- 18. 什麼是IOR文件,它是做什麼的,它是如何工作的?
- 19. 爲什麼JavaScript轉換它,它是什麼將它轉換爲?
- 20. 什麼是python更python?
- 21. 什麼是Python中
- 22. 是什麼在Python
- 23. 什麼是「純Python?」
- 24. 什麼是在Python
- 25. 「是什麼」, 「?在python
- 26. 什麼是在Python
- 27. 什麼是在Python
- 28. 什麼是python類?
- 29. 爲什麼NSString'忘記'它是什麼?
我不知道......在哪裏你見過它所做的更改?這是有史以來第一次看到類似的東西...... –
我在內置模塊'linecache'中看到了它,我從'traceback'中看到它。 – user3002473