java和python玩家對import關鍵字一點都不陌生,本文以python為例,試着了解一下。
可以猜到,在import子產品時,python會從環境變量中搜尋需要加載的子產品,這個清單就存放在sys.path變量中,可以進行修改。想要引入時,首先要将路徑放到環境變量中。
對環境變量臨時修改,将<code>/home/admin/git</code>添加進來,示例如下:
類似windows系統變量,在查詢時,也是按照清單的順序進行周遊
這個很容易了解,檔案查詢而已,有的是.py檔案,有的是帶目錄package的。
測試代碼和結果如下:
将這個函數補充完善一下, 其中<code>import_file_to_module</code>是将源碼弄成python子產品對象并傳回,還有,要将子產品的各類屬性給塞進去。以<code>json</code>為例,他的屬性清單(兩個'_'開頭結尾的)如下:
具體加載器實作如下:
用的最多的東西反而最容易被忽視,比如c語言printf(),c++的cout,ruby的require等等。
拿來玩一玩,跟挖寶一樣,蠻有意思的~~
<a href="https://ruby-china.org/topics/4897">pep 302是什麼?</a>
<a href="http://programmers.stackexchange.com/questions/154247/experience-of-pythons-pep-302-new-import-hooks">experience of python's “pep-302 new import hooks”</a>