初识模块
存儲著很多常用功能的一個py文件就是一個模塊.模塊就是一系列常用功能的集合體.
為什么要使用模塊?
- 組織結構更清晰,方便管理,易維護
- 拿來主義,節省代碼,大大提升開發效率
py文件兩種功能:
- 執行文件(承載代碼),俗稱腳本
- 模塊(被引用,被執行)
模塊的分類
內置模塊,也叫標準庫.此類模塊就是python解釋器提供的,time,os等200多種
第三方模塊,第三方庫,各種python大神寫的非常好用的模塊,必須通過pip install 指令安裝的模塊,比如Django等,大概有6000多個
自定義模塊,我們自己定義的一些模塊
# 示例 # haha.py name = '劉德華' lst = [1, 2, 3] def fucn():print('haha模塊', name) def change():global namename = '張學友' def lst_append():lst.append(4) # 這個haha.py文件就是一個模塊
引用模塊的方法
import使用: import 模塊名
引用模塊會做三件事:
- 創建一個以模塊名命名的名稱空間,類似全局名稱空間(這里保存的是變量和值的對應關系)
- 執行這個名稱空間(即導入的模塊)里面的代碼,將其加載到內存.(如果多次導入,則只有第一次會執行代碼)
- 通過此模塊名.的方式引用模塊里面的內容(變量,函數名,類名等).這個名字和變量名沒有區別,都是'第一類的'.并且模塊中定義的名字與執行文件中的名字來自兩個完全不同的地方
被導入的模塊有獨立的名稱空間
每個模塊都是一個獨立的名稱空間,定義在這個模塊中的函數,把這個模塊的名稱空間當做全局名稱空間,這樣我們在編寫自己的模塊時,就不用擔心我們定義在自己模塊中的全局變量會在被導入時,與使用者的全局變量沖突.
# 示例 # 當前是 hello.py import haha name = '劉亦菲' print(name) # 劉亦菲 print(haha.name) # 劉德華
為導入的模塊起個別名
# 方便書寫 # 簡化代碼,可以用于統一接口 # 當前是 hello.py import haha as wow # as后面是想改的名字 print(wow.name) # 劉德華引入多個模塊
- 推薦多行逐個導入: 易于閱讀 易于編輯 易于搜索 易于維護
from ... import ... 使用: from 模塊名 import 變量名
from ... import ...引入時,也會開辟一個以模塊名命名的名稱空間,但是會把我們想要引入的具體內容(類如變量)的對應關系復制到當前執行文件的全局名稱空間中. 注意: 因為復制的是對應關系,所以比較像淺拷貝.
# 例一 name = '劉亦菲' from haha import name print(name) # 劉德華 # 例二 from haha import name # 把模塊空間內name的對應關系復制了過來. from haha import change # 修改模塊空間內的name,但是name是不可變的數據類型,直接改變了指向. print(name) # 劉德華 ----------------------------------------------- # 例三 from haha import lst # 把模塊空間內lst的對應關系復制了過來 from haha import lst_append # 修改模塊空間內的lst,執行文件全局空間中的lst與模塊空間內的lst指向同一個內存地址 print(lst) # [1, 2, 3, 4]引用模塊中的函數,如果此函數用到了一些變量,這些變量還是從此模塊空間中尋找
優點: 使用起來方便了(不用模塊名. ,而是直接使用)
缺點: 容易與當前執行文件產生覆蓋效果,相當于變量的重新賦值
也可引入多個
也可以起別名
from...import* 盡量別用單獨使用 拷貝全部
# 1,把模塊中所有的不是以下劃線(_)開頭的名字都導入到當前位置 # 2,容易覆蓋 # 可以使用__all__來控制* , 在模塊文件中新增一行 __all__=['name','change'] #這樣在另外一個文件中用from haha import *就這能導入列表中規定的兩個名字
模塊的搜索路徑:
內存中已經加載的模塊
內置模塊中
sys.path給出的目錄列表中
# 手動添加模塊的路徑 import sys sys.path.append(模塊所在目錄) import 模塊需要特別注意的是: 我們自定義的模塊名不應該與系統內置模塊重名
轉載于:https://www.cnblogs.com/zyyhxbs/p/11090436.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
- 上一篇: win7登录不用密码怎么设置密码 Win
- 下一篇: 惠普pr怎么进去bios界面 如何进入惠