Python 入門基礎13 --模塊與包
阿新 • • 發佈:2019-04-08
再次 acl mysql 一次 == 數據 邏輯 ora this
今日內容:
1.模塊及使用
2.起別名、from導入
3.自執行與模塊
一、模塊及使用
1.模塊
一系列功能的集合體
2.定義模塊
創建一個py文件就是一個模塊,該py文件名就是模塊名
3.為什麽要使用模塊
1.從文件級別組織代碼,是同特性的功能能統一管理
2.可以使用系統或第三方模塊(拿來主義),來提高開發效率
4.模塊存在方式
1.使用C語言編寫並鏈接到Python解釋器的內置模塊
2.已被編譯為共享庫或DLL的C或C++擴展
3.使用Python編寫的.py文件(任何一個py文件都可以作為模板)
4.包:一堆py文件的集合體
5.如何使用模塊
# 在要使用的該模塊功能的文件中導入模塊,通過import關鍵字導入模塊名 import module 導入模塊,會編譯執行一個pyc文件,該pyc文件就是該模塊的執行文件 再次導入,module模塊不會被執行了
# 在任何地方都可以導入模塊
def fn():
global m3
import m3 # 就是普通的名字,只是該名字執行的是一個py文件
print('>>>',m3.num)
fn()
print(m3.num)
二、起別名、from導入
1.起別名
# 通過關鍵字as可以給模塊起別名:模塊一旦起別名,原模塊名就不能再使用 # 1.可以簡化模塊名字 import mmmmmmmmmmmmm3 as my_m3 print(my_m3.num) # 2.可以統一功能 cmd = input('數據庫選擇 1.mysql 2.oracle :') if cmd =='1': import mysql as db # mysql.excuse() else: import oracle as db # oracle.excuse() db.excuse() # ------------------------ mysql.py def excuse(): print('this is mysql') # ------------------------ oracle.py def excuse(): print('this is oracle')
2.from導入
# 在import後的名字才會在該文件的名稱空間中產生 from m4 import a,b,_c # 指名道姓的可以導入_開頭的名字 # 通過*導入: 可以將導入模塊中的(除了以_開頭的)名字一並導入 from m4 import * # 通常不建議導入* ,但需要使用模塊中絕大部分名字時,才考慮導入* print(a) a() # 兩個py文件中的名字a都合理存在 # 但import後的名字a和a=20,在一個名稱空間中,只會保留最後一次值 a = 20 b() # print(a) # print(_c) # ------------------------ m4.py def a(): print('a func') def b(): a() print('b func') def _c(): print('c func') # _c = 30 # import _c as c # 需求:內部已經有_開頭的名字,還想被外界通過 * 導入 # 本質:導入 * 其實就是導入__all__列表中存放的索引名字,系統默認不會收錄_開頭的名字 __all__ =['a', 'b', '_c'] # 通過自定義__all__來規定外界通過*可以導入的名字
三、自執行與模塊
# __name__:
# 1.在py文件作為模塊被使用時,__name__為模塊名
# 2.在py文件自執行時,__name__為字符串 '__main__'
# print(__name__)
# ------------------------
m6.py
print("共有邏輯")
if __name__ == '__main__':
# 所有自執行的邏輯
print("m6: 我是自執行的")
a = 10 # 產生的是全局的名字
else:
# 所有模塊的邏輯
print("m6: 我被導入執行的")
# print(a) # 走else就不可能走if,所以a壓根沒產生
Python 入門基礎13 --模塊與包