快速進(jìn)修Python指南之自定義模塊常用模塊
引言
按照我們平常的慣例,我先來(lái)講一下今天這節(jié)課的內(nèi)容,以及Java和Python在某些方面的相似之處。Python使用import語(yǔ)句來(lái)導(dǎo)入包,而Java也是如此。然而,兩者之間的區(qū)別在于Python沒(méi)有類路徑的概念,它直接使用.py文件的文件名作為導(dǎo)入路徑,并將其余的工作交給Python解釋器來(lái)掃描和處理。另外,你可能經(jīng)??吹接腥耸褂胒rom…import語(yǔ)句,這種語(yǔ)法是為了從.py文件中只導(dǎo)入部分函數(shù)或變量而設(shè)計(jì)的。也可能是導(dǎo)致不同包目錄的情況
自定義模塊
我來(lái)舉一個(gè)在Java開(kāi)發(fā)中常用的開(kāi)發(fā)方式作為例子。在我們進(jìn)行項(xiàng)目開(kāi)發(fā)時(shí),通常會(huì)在項(xiàng)目的結(jié)構(gòu)中創(chuàng)建一個(gè)util包,用于存放一些工具類。同樣,Python也可以采用類似的方式來(lái)組織代碼結(jié)構(gòu),讓大家更容易理解。
在同目錄下
如果你想在在同目錄下創(chuàng)建一個(gè)nameUtil.py文件,并不想另外創(chuàng)建一個(gè)util包的話,也可以,我們可以演示一下。以下是nameUtil.py的簡(jiǎn)單內(nèi)容:
name = "xiaoyu" def getName(name): print(f"我的名字是{name}")
在執(zhí)行的Python文件(main.py)中,可以直接使用import語(yǔ)句來(lái)引入其他模塊。例如:
import nameUtil name = "xiaoyu" nameUtil.getName(nameUtil.name) # 可將nameUtil.name替換成name
可以使用from…import語(yǔ)句優(yōu)化一下上面的內(nèi)容:
from nameUtil import getName getName("xiaoyu")
這種情況是最簡(jiǎn)單的。當(dāng)你想要導(dǎo)入某個(gè)包的時(shí)候,你可能會(huì)想,為什么我可以直接導(dǎo)入,而不需要在同目錄下引入各種第三方包呢?實(shí)際上,這和Java是一樣的。Python也有固定的包掃描路徑。比如,當(dāng)我們導(dǎo)入第三方包時(shí),Python會(huì)搜索第三方庫(kù)的安裝路徑。這些路徑通常是通過(guò)包管理工具(如pip)安裝的。
不在同一目錄下
如果我們將一些Python工具類單獨(dú)放在一個(gè)名為"util"的目錄中,這樣可以更好地組織代碼。這種做法符合規(guī)范,并且讓我們的代碼更易讀、易維護(hù)。下面我將演示一下如何使用這種目錄結(jié)構(gòu),唯一的區(qū)別是,你需要使用"from"語(yǔ)句來(lái)導(dǎo)入工具類,而不能簡(jiǎn)單地使用"import"語(yǔ)句。
目錄結(jié)構(gòu)如下:
main.py內(nèi)容如下:
main.py內(nèi)容如下: from utils import nameUtil name = "xiaoyu" nameUtil.getName(nameUtil.name) # 可將nameUtil.name替換成name
這就很像我們正常開(kāi)發(fā)的模式了,因?yàn)樵陂_(kāi)發(fā)過(guò)程中,我們通常需要將模塊按照不同的功能進(jìn)行分級(jí),并創(chuàng)建相應(yīng)的包目錄結(jié)構(gòu)。這樣,我們就可以像上面那樣編寫(xiě)代碼。如果有多層包目錄,我們可以繼續(xù)按照相同的方式導(dǎo)入模塊,例如:from java.utils import nameUtil。感覺(jué)就像是回到了熟悉的開(kāi)發(fā)環(huán)境,我們可以開(kāi)始進(jìn)行正常的開(kāi)發(fā)工作了。
常用模塊
我們將舉一些在開(kāi)發(fā)Java工作中常用的工具類,這些工具類同樣適用于Python編程語(yǔ)言。
time模塊
提供了與時(shí)間相關(guān)的函數(shù)和類,可以用來(lái)獲取當(dāng)前時(shí)間、格式化時(shí)間、計(jì)時(shí)等操作。在加密接口中,經(jīng)常需要使用時(shí)間戳場(chǎng)景來(lái)確保數(shù)據(jù)的安全性。
獲取當(dāng)前時(shí)間戳:current_time = time.time()
將時(shí)間戳轉(zhuǎn)換為可讀時(shí)間:readable_time = time.ctime(current_time)
格式化時(shí)間:formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(current_time))
程序休眠一定時(shí)間:time.sleep(2) # 程序暫停2秒
datetime模塊
是Python中提供的一個(gè)功能強(qiáng)大的模塊,它包含了許多與日期和時(shí)間相關(guān)的函數(shù)和類,可以方便地進(jìn)行日期和時(shí)間的計(jì)算、格式化等操作。在很多場(chǎng)景下,比如列表查詢等,我們經(jīng)常會(huì)用到日期模塊的功能。
獲取當(dāng)前日期時(shí)間:current_datetime = datetime.datetime.now()
格式化日期時(shí)間:formatted_datetime = current_datetime.strftime("%Y-%m-%d %H:%M:%S")
計(jì)算兩個(gè)日期之間的差值:time_difference = datetime.datetime(2022, 1, 1) - datetime.datetime(2021, 1, 1)
json模塊
在Python中提供了處理JSON數(shù)據(jù)的函數(shù)和類,它可以被廣泛地應(yīng)用于解析和生成JSON數(shù)據(jù)。在工作中,我們經(jīng)常會(huì)遇到需要處理JSON數(shù)據(jù)的情況,所以我想詳細(xì)解釋一下它的用法。然而,需要注意的是,在某些特定的情況下,比如與微信開(kāi)放者平臺(tái)進(jìn)行接口對(duì)接時(shí),數(shù)據(jù)的傳輸形式可能會(huì)是XML格式。在我之前的工作經(jīng)歷中,就遇到過(guò)這樣的情況,在與微信開(kāi)放者平臺(tái)對(duì)接時(shí)我也踩過(guò)一些坑,需要特別注意。
解析JSON字符串
json_data = '{"name": "xiaoyu", "age": 30}' parsed_data = json.loads(json_data) # 獲取key的value值 name = parsed_data["name"] age = parsed_data["age"] print(name) # 輸出:xiaoyu print(age) # 輸出:30 # 添加新的鍵值對(duì) parsed_data["city"] = "China" print(parsed_data)
生成JSON字符串:data = {"name": "John", "age": 30} json_data = json.dumps(data)這里的data是對(duì)象,變量json_data就是一個(gè)包含了"name"和"age"鍵值對(duì)的JSON格式字符串。
os模塊
提供了與操作系統(tǒng)相關(guān)的函數(shù)和類,可以用來(lái)進(jìn)行文件和目錄操作、進(jìn)程管理等操作。如果你經(jīng)常需要進(jìn)行文件操作,不管是在學(xué)習(xí)還是工作中,了解和掌握os模塊都是非常重要的。
獲取當(dāng)前工作目錄:current_directory = os.getcwd()
創(chuàng)建目錄:os.mkdir("new_directory")
判斷文件或目錄是否存在:exists = os.path.exists("file.txt")
sys模塊
提供了與Python解釋器和系統(tǒng)相關(guān)的函數(shù)和變量,可以用來(lái)獲取命令行參數(shù)、退出程序等操作。這在開(kāi)發(fā)中非常有用,尤其是當(dāng)我們需要與系統(tǒng)進(jìn)行交互時(shí)。
獲取命令行參數(shù):arguments = sys.argv
退出程序:sys.exit()
總結(jié)
在導(dǎo)入包方面,兩者都使用import語(yǔ)句,但是Python沒(méi)有類路徑的概念,直接使用文件名來(lái)導(dǎo)入模塊。我們還討論了自定義模塊的創(chuàng)建和使用,以及在不同目錄下如何組織代碼結(jié)構(gòu)。此外,我們介紹了一些常用的Python模塊,包括time、datetime、json、os和sys,它們?cè)陂_(kāi)發(fā)中非常實(shí)用。希望今天的課程對(duì)大家有所幫助!
以上就是Java開(kāi)發(fā)者如何快速進(jìn)修Python指南之自定義模塊常用模塊的詳細(xì)內(nèi)容,更多關(guān)于Python自定義常用模塊的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python 實(shí)現(xiàn)多維數(shù)組轉(zhuǎn)向量
今天小編就為大家分享一篇python 實(shí)現(xiàn)多維數(shù)組轉(zhuǎn)向量,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11Python 實(shí)現(xiàn)RSA加解密文本文件
這篇文章主要介紹了Python 實(shí)現(xiàn)RSA加解密文本文件的方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-12-12