把一些常用的函式放在乙個py檔案中,這個檔案就稱之為模組。
1.方便管理。讓程式的解構更加清晰,實現功能的重複使用;
2.提公升開發效率。俗話說的拿來主義,避免重複造輪子,使用別人寫好的實現了某些功能的模組,可以大大提高開發效率。
第一類:內建模組,也叫做標準庫。python自帶,200多個,每個模組又包含很多的功能,比如os,sys,time;
第二類:第三方模組,第三方庫。需通過pip install指令安裝的模組,比如django,beautfulsoup等,大約6000多種;
第三類:自定義模組。我們自己在專案中定義的模組。
語法:import 模組名
模組可以包含可執行語句和函式的定義,這些語句的目的是初始化模組,他們只在模組名第一次遇到import匯入語句時才執行。import的優化手段是可以在程式的任何位置使用,並且在第一次載入完成時執行模組裡的執行語句,後邊再呼叫時就不會重複執行模組裡的語句。
ps:重複匯入會直接引用內u你中已經載入好的結果
每個模組都是乙個獨立的命名空間,定義在這個模組中的函式,把在這個模組的名稱當作全域性命名空間,這樣在編寫自定義的模組時,就不用擔心自定義模組中的全域性變數被匯入後與使用者的全域性變數衝突。
舉例(小坑):
#自定義模組aries.py,當作指令碼執行時,會看到的呼叫change函式後name已經被改變了
name = 'aries'
def change():
global name
name = 'allen'
change()
print(name) #輸出 allen
#把aries.py當作模組在新的py檔案中載入時
import aries #載入aries模組
name = 'jack' #在本py檔案下,建立全域性變數name與aries模組裡的name同名
aries.change() #呼叫aries下的change函式
print(name)
#### 輸出
allen #第一次載入aries時,執行模組裡的語句
jack #chang函式並沒有改變本地py檔案中name的值
語法:import 模組名 as 別名
優點:將很長的模組名簡化,方便使用;有利於**的擴充套件和優化
#mysql.py
def sqlparse():
print('from mysql sqlparse')
#oracle.py
def sqlparse():
print('from oracle sqlparse')
#test.py
db_type=input('>>: ')
if db_type == 'mysql':
import mysql as db
elif db_type == 'oracle':
import oracle as db
db.sqlparse()
# 可以但是不推薦
import os,sys,json
#推薦寫法
import os
import sys
import json
語法:form 模組名 import 函式名1,函式名2...
也可以使用as起別名
使用from...import...則是將模組中的名字直接匯入到當前的命名空間中,所以在當前命名空間中,直接使用名字就可以了、無需加字首
from...import...的方式有好處也有壞處
好處:使用起來方便了
壞處:容易與當前執行檔案中的名字衝突。
把模組裡的所有的函式載入到本py檔案中,不建議使用。
在模組中可以使用__all__
來控制哪些函式可以被呼叫
#在aries模組中,使用all可以把能被呼叫的函式寫進去
__all__=['change','a_count']
編寫好的乙個py檔案有兩種用途:
python內建了全域性變數__name__
:
可以在在模組中使用一下條件來限制條用函式
if __name__ == '__main__':
# 在模組檔案中測試chang函式
# 此模組被匯入時 __name__ == aries 所以不執行
change()
記憶體中已經載入的模組->內建模組->sys.path路徑中包含的模組
【特別注意:】我們自定義的模組名不應該與系統內建模組重名
#首先製作歸檔檔案:zip module.zip foo.py bar.py
import sys
import foo,bar
#也可以使用zip中目錄結構的具體位置
#windows下的路徑不加r開頭,會語法錯誤
sys.path.insert(0,r'c:\users\administrator\pycharmprojects\a')
python模組學習之glob模組
功能描述 glob模組可以使用unix shell風格的萬用字元匹配符合特定格式的檔案和資料夾,跟windows的檔案搜尋功能差不多。glob模組並非呼叫乙個子shell實現搜尋功能,而是在內部呼叫了os.listdir 和fnmatch.fnmatch 檢視我之前寫的fnmatch。glob模組共...
python學習之模組
模組與包 1.模組 在 python 中,乙個.py檔案就稱之為乙個模組 module 大大提高了 的可維護性 編寫 不必從零開始。當乙個模組編寫完畢,就可以被其他地方引用 呼叫模組時用import 包名 eg hello模組 def add x,y return x y def jian x,y ...
一丶Python模組之getpass模組
python 模組 module 是乙個 python 檔案,以 py 結尾,包含了 python 物件定義和python語句。getpass模組提供了可移植的密碼輸入,一共包括下面兩個函式 1.getpass.getpass 2.getpass.getuser getpass.getpass 1 ...