您好,登錄后才能下訂單哦!
怎么在python中引入文件?相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
Python中的包,也就是.py文件,那么該怎么引入文件呢?
使用 import 導(dǎo)入模塊的語法,但實(shí)際上 import 還有更多詳細(xì)的用法,主要有以下兩種:
import 模塊名1 [as 別名1], 模塊名2 [as 別名2],…: 導(dǎo)入整個模塊。 from 模塊名 import 成員名1 [as 別名1],成員名2 [as 別名2],…: 導(dǎo)入模塊中指定成員。
上面兩種 import 語句的區(qū)別主要有以下幾點(diǎn):
第一種 import 語句導(dǎo)入整個模塊內(nèi)的所有成員(包括變量、函數(shù)、類等);第二種 import 語句只導(dǎo)入模塊內(nèi)的指定成員(除非使用 form 模塊名 import *,但通常不推薦使用這種語法)。
當(dāng)使用第一種 import 語句導(dǎo)入模塊中的成員時,必須添加模塊名或模塊別名前綴;使用第二種 import 語句導(dǎo)入模塊中的成員時,無須使用任何前綴,直接使用成員名或成員別名即可。
下面程序使用導(dǎo)入整個模塊的最簡單語法來導(dǎo)入指定模塊:
# 導(dǎo)入sys整個模塊 import sys # 使用sys模塊名作為前綴來訪問模塊中的成員 print(sys.argv[0])
上面第 2 行代碼使用最簡單的方式導(dǎo)入了 sys 模塊,因此在程序中使用 sys 模塊內(nèi)的成員時,必須添加模塊名作為前綴。
運(yùn)行上面程序,可以看到如下輸出結(jié)果(sys 模塊下的 argv 變量用于獲取運(yùn)行 Python 程序的命令行參數(shù),其中 argv[0] 用于獲取該 Python 程序的程序名)。
import test.py
在導(dǎo)入整個模塊時可以為模塊指定別名。例如如下程序:
# 導(dǎo)入sys整個模塊,并指定別名為s import sys as s # 使用s模塊別名作為前綴來訪問模塊中的成員 print(s.argv[0])
第2行代碼在導(dǎo)入 sys 模塊時才指定了別名 s,因此在程序中使用 sys 模塊內(nèi)的成員時,必須添加模塊別名 s 作為前綴。運(yùn)行該程序,可以看到如下輸出結(jié)果:
import test2.py
使用導(dǎo)入整個模塊的語法也可一次導(dǎo)入多個模塊,多個模塊之間用逗號隔開。例如如下程序:
# 導(dǎo)入sys、os兩個模塊 import sys,os # 使用模塊名作為前綴來訪問模塊中的成員 print(sys.argv[0]) # os模塊的sep變量代表平臺上的路徑分隔符 print(os.sep)
上面第 2 行代碼一次導(dǎo)入了 sys 和 os 兩個模塊,因此程序要使用 sys、os 兩個模塊內(nèi)的成員,只要分別使用 sys、os 模塊名作為前綴即可。在 Windows 平臺上運(yùn)行該程序,可以看到如下輸出結(jié)果(os 模塊的 sep 變量代表平臺上的路徑分隔符):
import test3.py \
同時,在導(dǎo)入多個模塊時也可以為模塊指定別名,例如如下程序:
# 導(dǎo)入sys、os兩個模塊,并為sys指定別名s,為os指定別名o import sys as s,os as o # 使用模塊別名作為前綴來訪問模塊中的成員 print(s.argv[0]) print(o.sep)
上面第 2 行代碼一次導(dǎo)入了sys 和 os 兩個模塊,并分別為它們指定別名為 s、o,因此程序可以通過 s、o 兩個前綴來使用 sys、os 兩個模塊內(nèi)的成員。在 Windows 平臺上運(yùn)行該程序,可以看到如下輸出結(jié)果:
import_test4 .py \
接下來介紹使用 from...import 導(dǎo)入模塊內(nèi)指定成員的用法。下面程序使用 from...import 導(dǎo)入模塊成員的最簡單語法來導(dǎo)入指定成員:
# 導(dǎo)入sys模塊的argv成員 from sys import argv # 使用導(dǎo)入成員的語法,直接使用成員名訪問 print(argv[0])
第 2 行代碼導(dǎo)入了 sys 模塊中的 argv 成員,這樣即可在程序中直接使用 argv 成員,無須使用任何前綴。運(yùn)行該程序,可以看到如下輸出結(jié)果:
from import test.py
使用 from...import 導(dǎo)入模塊成員時也可為成員指定別名,例如如下程序:
# 導(dǎo)入sys模塊的argv成員,并為其指定別名v from sys import argv as v # 使用導(dǎo)入成員(并指定別名)的語法,直接使用成員的別名訪問 print(v[0])
第 2 行代碼導(dǎo)入了 sys 模塊中的 argv 成員,并為該成員指定別名 v,這樣即可在程序中通過別名 v 使用 argv 成員,無須使用任何前綴。運(yùn)行該程序,可以看到如下輸出結(jié)果:
from import test2.py
在使用 form...import 導(dǎo)入模塊成員時也可同時導(dǎo)入多個成員,例如如下程序:
# 導(dǎo)入sys模塊的argv,winver成員 from sys import argv, winver # 使用導(dǎo)入成員的語法,直接使用成員名訪問 print(argv[0]) print(winver)
上面第 2 行代碼導(dǎo)入了 sys 模塊中的 argv、 winver 成員,這樣即可在程序中直接使用 argv、winver 兩個成員,無須使用任何前綴。運(yùn)行該程序,可以看到如下輸出結(jié)果(sys 的 winver 成員記錄了該 Python 的版本號):
from import test3.py 3.6
在使用 from...import 同時導(dǎo)入多個模塊成員時也可指定別名,同樣使用 as 關(guān)鍵字為成員指定別名,例如如下程序:
# 導(dǎo)入sys模塊的argv,winver成員,并為其指定別名v、wv from sys import argv as v, winver as wv # 使用導(dǎo)入成員(并指定別名)的語法,直接使用成員的別名訪問 print(v[0]) print(wv)
上面第 2 行代碼導(dǎo)入了 sys 模塊中的 argv、winver 成員,并分別為它們指定了別名 v、wv,這樣即可在程序中通過 v 和 wv 兩個別名使用 argv、winver 成員,無須使用任何前綴。
在使用 from...import 語法時也可一次導(dǎo)入指定模塊內(nèi)的所有成員,例如如下程序:
#導(dǎo)入sys 棋塊內(nèi)的所有成員 from sys import * #使用導(dǎo)入成員的語法,直接使用成員的別名訪問 print(argv[0]) print(winver)
上面代碼一次導(dǎo)入了 sys 模塊中的所有成員,這樣程序即可通過成員名來使用該模塊內(nèi)的所有成員。該程序的輸出結(jié)果和前面程序的輸出結(jié)果完全相同。
需要說明的是,一般不推薦使用“from 模塊 import”這種語法導(dǎo)入指定模塊內(nèi)的所有成員,因?yàn)樗嬖跐撛诘娘L(fēng)險。比如同時導(dǎo)入 module1 和 module2 內(nèi)的所有成員,假如這兩個模塊內(nèi)都有一個 foo() 函數(shù),那么當(dāng)在程序中執(zhí)行如下代碼時:
foo()
上面調(diào)用的這個 foo() 函數(shù)到底是 module1 模塊中的還是 module2 模塊中的?因此,這種導(dǎo)入指定模塊內(nèi)所有成員的用法是有風(fēng)險的。
但如果換成如下兩種導(dǎo)入方式:
import module1 import module2 as m2
接下來要分別調(diào)用這兩個模塊中的 foo() 函數(shù)就非常清晰。程序可使用如下代碼:
#使用模塊module1 的模塊名作為前綴調(diào)用foo()函數(shù) module1.foo() #使用module2 的模塊別名作為前綴調(diào)用foo()函數(shù) m2.foo()
或者使用 from...import 語句也是可以的:
#導(dǎo)入module1 中的foo 成員,并指定其別名為foo1 from module1 import foo as fool #導(dǎo)入module2 中的foo 成員,并指定其別名為foo2 from module2 import foo as foo2
此時通過別名將 module1 和 module2 兩個模塊中的 foo 函數(shù)很好地進(jìn)行了區(qū)分,接下來分別調(diào)用兩個模塊中 foo() 函數(shù)就很清晰:
foo1() #調(diào)用module1 中的foo()函數(shù) foo2() #調(diào)用module2 中的foo()函數(shù)
看完上述內(nèi)容,你們掌握怎么在python中引入文件的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。