1.同級(jí),、同目錄的文件之間的訪問有這樣一個(gè)目錄結(jié)構(gòu) 假如,,in_A.py 這個(gè)文件想調(diào)用 hello_world.py 中的函數(shù)怎么辦呢? --->>> import 只需在 in_A.py 中 寫入 import hello_world hello_world.functions() 這樣就可以訪問啦,,什么原理呢,? import hello_world 的本質(zhì) 首先,import 語法會(huì)將 hello_world 里的所有內(nèi)容解釋(一行一行的讀)到內(nèi)存中,,并把它賦值給hello_world 這個(gè)對(duì)象,,然后我們就可以通過點(diǎn)號(hào)(' . ')訪問這個(gè)對(duì)象里python基礎(chǔ)教程的內(nèi)容了,比如調(diào)用函數(shù),,使用變量...... 比如 hello_world.hello() 就是調(diào)用了hello_world.py 里的 hello() 方法,。 接下來一個(gè)問題,import 是怎么找到 hello_world.py 這個(gè)文件的呢,? --->>> import 首先會(huì)在當(dāng)前目錄下找,,沒找到就去環(huán)境變量里找。 環(huán)境變量,,可以通過 sys 模塊下的 path列表查看哈 import sysprint(sys.path) 到這里,,就明白了同級(jí)同目錄之間的文件訪問了 2.同級(jí)、不同目錄的文件之間的訪問現(xiàn)在來了個(gè)這樣的目錄結(jié)構(gòu) 如果說 in_B.py 這位老兄也想訪問 hello_world.py 里的對(duì)象怎么辦呢,? 直接 import是肯定就不行啦,,因?yàn)楫?dāng)前目錄下找不到,環(huán)境變量里也找不到,。 如果 import content_A 會(huì)是什么效果呢,?當(dāng)然也是不行的,。content_A 沒在環(huán)境變量里。既然他沒有在環(huán)境變量里那就把他的“ father ”加進(jìn)去吧,,為啥加他的上級(jí)目錄,?它的父級(jí)目錄再環(huán)境變量里的話,找到他的父級(jí)目錄也就找到他了,。 把上級(jí)目錄加入環(huán)境變量: import osimport sys path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))# print(path)sys.path.append(path) dirname() ,返回上級(jí)目錄 abspath() ,把相對(duì)路勁轉(zhuǎn)化為絕對(duì)路徑
最后通過 append() 把一個(gè)路徑加入環(huán)境變量,,完成了上面的 一系列操作以后,問題又來了 之前 import 的是 .py的文件,,現(xiàn)在直接 import 了一個(gè)目錄,,解釋器會(huì)干什么呢?如果一個(gè)目錄下有一堆文件他應(yīng)該 import 那個(gè)呢,? hh,解釋器是很聰明的,,他會(huì)跑去解釋目錄下的 這時(shí)就可以用把 content_A 的父級(jí)目錄加入環(huán)境變量的方法,把 content_A 加入環(huán)境變量,,把代碼寫入 3.不同級(jí),、不同目錄的文件之間的訪問有了上面的思路,想 import 誰,,把他的父級(jí)目錄送進(jìn)環(huán)境變量就可以了,,就不舉例子了 |
|