Python中的模塊和包是組織和管理代碼的重要工具。通過模塊和包,你可以更好地管理和重用你的代碼,使得代碼更加模塊化和可維護。
目錄
前言
正文
一、模塊
? ? ? ? 1、模塊的分類
? ? ? ? ? ? ? ? 1)內置模塊
? ? ? ? ? ? ? ? ? ? ? ? python解釋器中默認擁有的模塊可以直接使用(如:os、random)
? ? ? ? ? ? ? ? 2)第三方模塊
? ? ? ? ? ? ? ? 3)自定義模塊
? ? ? ? 2、模塊的使用
? ? ? ? ? ? ? ? 1)import 模塊名 as 別名
? ? ? ? ? ? ? ? ? ? ? ? 2)from 模塊名 import 函數名?
? ? ? ? ? ? ? ? ? ? ? ? 3)兩種方式的優劣
二、包
? ? ? ? 1、創建一個包
? ? ? ? 2、包的使用,和模塊的導入是一樣的
三、內置變量__name__
總結
前言
????????在一個文件中為了實現某些功能代碼將會越來越長,這樣就會導致代碼的維護性以及可讀性較差。為了避免這種情況,我們可以將不同的函數(功能)進行分類,放在不同的文件里,這樣每個文件的代碼相對較少。更利于我們進行代碼的管理。
正文
一、模塊
? ? ? ? 模塊是一系列功能(函數)的集合體
? ? ? ? 1、模塊的分類
? ? ? ? ? ? ? ? 1)內置模塊
? ? ? ? ? ? ? ? ? ? ? ? python解釋器中默認擁有的模塊可以直接使用(如:os、random)
? ? ? ? ? ? ? ? 2)第三方模塊
? ? ? ? ? ? ? ? ? ? ? ? 由其他大佬寫好的模塊,需要到網上下載(如:requests、pandas)
? ? ? ? ? ? ? ? ? ? ? ? 下載方式:在終端中輸入命令pip install 模塊名 -i [鏡像源]
? ? ? ? ? ? ? ? 3)自定義模塊
? ? ? ? ? ? ? ? ? ? ? ? 自己寫的模塊,模塊名稱需要遵循標識符的規定
? ? ? ? 2、模塊的使用
????????先導入模塊同一個模塊只需要導入一次,通常是把導入模塊的代碼放在文件的開頭導入后,可以在程序的任意地方使用模塊里的功能。導入一個模塊時模塊中的代碼會被執行一遍。
? ? ? ? ? ? ? ? 1)import 模塊名 as 別名
? ? ? ? ? ? ? ? ? ? ? ? 該方式會導入模塊中的所用功能,可以通過模塊名調用該模塊中的所有函數
? ? ? ? ? ? ? ? ? ? ? ? 作用:導入模塊中的所有內容
? ? ? ? ? ? ? ? ? ? ? ? 別名:當模塊名太長時,可以通過as來重命名
例:
模塊login.py中的內容
# 這是一個用于檢查用戶名與密碼是否正確的的模塊
def Login():user = input('請輸入用戶名:')password = input('請輸入密碼:')if user == '寫代碼也擺爛':if password == '123':return Truereturn False# 用于輸出登入是否成功
def Login_TF(buer):if buer:print('登入成功')else:print('用戶名或密碼錯誤')
?main.py中的內容
# 這里是主文件
# 使用import直接調用調用登入模塊
import login
# 該方式會導入模塊中的所用功能,可以通過模塊名調用該模塊中的所有函數print('調用login.Login()的結果')print(login.Login())print('調用login.Login_TF(login.Login())的結果')login.Login_TF(login.Login())# 對模塊名進行重命名
import login as lgprint('重命名后調用lg.Login()的結果')print(lg.Login())
運行main.py結果:
????????????????2)from 模塊名 import 函數名?
? ? ? ? ? ? ? ? ? ? ? ? 該方法是是用于指定導入模塊中的功能/變量
? ? ? ? ? ? ? ? ? ? ? ? 作用:導入模塊中指定的功能
????????????????3)兩種方式的優劣
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 優:使用import導入可以直接使用模塊中的所有函數較為方便,使用form導入可以針對性的導入自己需要使用的函數,?所需要占用的資源少
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 劣:import直接導入所用功能,會占用較多的資源且模塊中大部分的函數不會被使用到。使用from導入如果需要使用較多的函數時會比較麻煩
二、包
? ? ? ? 如果說模塊是功能(函數的集合體),那么包就是模塊的集合體,它的作業與模塊類似,不過它是用來對模塊進行分類的。
? ? ? ? 1、創建一個包
? ? ? ? ? ? ? ? 步驟:new--python package(包的命名遵守標識符的規定)
????????????????一個包本質上是一個包含了一些模塊和一個特殊的 __init__.py
文件的目錄。、
????????????????__init__.py :導包的時候會自動執行init文件里
? ? ? ? 2、包的使用,和模塊的導入是一樣的
? ? ? ? 語法:import 包名.模塊名
? ? ? ? ? ? ? ? ? from 包名 import 模塊名
? ? ? ? ? ? ? ? ? from 包名.模塊名 import 函數名/變量名
三、內置變量__name__
?????????當 Python 解釋器加載一個模塊時,它會將該模塊的名稱賦值給 __name__
變量。如果模塊是主程序,Python 解釋器會將 __name__
設置為 "__main__"
;否則,如果模塊是被導入的,__name__
就是模塊的名稱。
作為主程序運行時:
?作為模塊被引用時(導入一個模塊時模塊中的代碼會被執行一遍):
?????????該變量常用于判斷一個文件是被直接執行還是被導入到另一個文件中執行。通常用于測試模塊中的功能是否能正常使用。
# 這是一個用于檢查用戶名與密碼是否正確的的模塊
def Login():user = input('請輸入用戶名:')password = input('請輸入密碼:')if user == '寫代碼也擺爛':if password == '123':return Truereturn Falseif __name__ == '__main__':# 判斷該文件是否被直接執行,如果是則執行以下代碼# 以下代碼用于測試該文件中的函數是否能正常使用# 如果該文件被當作模塊來調用則不會執行以下代碼print(__name__)Login()
直接運行該文件(運行了if中的語句):
?
?調用該文件(沒有執行if中的語句):
總結
? ? ? ?多個數據放在一起稱為 列表、元組、字典、集合等
? ? ? ? 多個語句放在一起完成一個功能,稱為函數
? ? ? ? 多個函數放在一起,稱為模塊
? ? ? ? 多個模塊放在一起,稱為包