1. 程式人生 > >Python 入門基礎13 --模塊與包

Python 入門基礎13 --模塊與包

再次 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 --模塊與包