一、什麼是模組?
模組是一系列功能的集合體。
模組的分類:自定義模組、第三方模組、內建模組(c語言寫的一些功能)
常見的模組形式:
1、乙個module.py檔案就是乙個模組,檔名是module.py,而模組名是module。
2、乙個包含有__init__.py檔案的資料夾也是模組。
3、已被編譯為共享庫或dll或c++擴充套件。
4、使用c編寫並鏈結到python直譯器的內建模組。
二、為什麼要用模組?
用第三方的或者內建的模組是一種拿來主義,可以的極大地提公升開發效率。
使用自定義模組可以使我們的程式更清晰,方便管理,實現功能的重複利用。(自定義模組即將我們自己程式中需要用到的公共的功能寫入到乙個python檔案,然後的程式的各部分元件可以通過匯入的方式來引用/重用自定義模組中的功能。)
三、如何用模組?
匯入的方式有兩種:
import 模組名 --->前提是有這個模組!
from 模組名 import 具體的功能
以spam.py為例來介紹模組的使用,檔名是spam.py,模組名是spam。
print('在導模組的時候會觸發檔案的執行,檔案只要執行了會發生什麼事?from the spam.py')
money = 1000
defread1():
print('
spam模組:
',money)
defread2():
print('
spam模組')
read1()
defchange():
global
money
money = 0
1、會以run.py檔案(當前執行檔案)為準,在記憶體中會造乙個內建命名空間,會造乙個以檔案級別全域性命名空間
首次匯入模組發生了3件事:(重複匯入會直接引用之前創造好的結果,不會重複執行模組的檔案)
1、以模組為準創造乙個模組的命名空間
2、執行模組對應的檔案,將執行過程中產生的名字都丟到模組的命名空間
3、在當前執行檔案中拿到乙個模組名
import spam #直接引入模組
如果模組名過長可以起個別名:
import 過長的模組名 as 新的別名在一行當中導多個某塊:用逗號隔開,但是不建議這麼寫,這樣寫不夠清晰,最好一行導乙個import time,spam,os,sysfrom ... import ... 首次匯入發生3件事1、以模組為準創造乙個模組的命名空間。
2、執行模組對應的檔案,將執行過程中產生的名字都丟到模組的命名空間。
3、在當前執行檔案的命名空間中拿到乙個名字,該名字直接指向模組中的某乙個名字,意味著可以不用加任何字首而直接使用。
from ... import ... 對比 import ...
優點:不用加字首,**更為精簡
缺點:容易與當前執行檔案中命名空間中的名字衝突
相同點:
1、都會執行模組相應的檔案,都會產生模組的命名空間。
2、呼叫功能時,需要跑到定義時尋找作用域關係,與呼叫位置無關。
不同點:
1、一種需要加字首,一種不需要加字首
支援取別名
可以一行匯入多個
from ... import * 把模組中所有的不是以下劃線__開頭的名字都匯入到當前位置。
注意:大部分情況下我們的python程式不應該使用這種匯入方式,因為*你不知道你匯入什麼名字,很有可能會覆蓋掉你之前已經定義的名字。而且可讀性極其的差,在互動式環境中匯入時沒有問題。在模組裡定製乙個變數__all__ = ['read1
','money
']
模組的使用,模組的搜尋路徑
模組的使用 1 什麼是模組 模組是一系列功能的集合體 常見的模組形式 自定義模組 第三方模組 內建模組 1 乙個module.py檔案就是乙個模組,檔名是module.py,而模組名是module 2 乙個包含有 init py檔案的資料夾也是模組 3 已被編譯為共享庫或dll的c或c 擴充套件 4...
python bisect模組的使用
這個模組只有幾個函式,一旦決定使用二分搜尋時,立馬要想到使用這個模組 import bisect l 1,3,3,6,8,12,15 x 3 x insert point bisect.bisect left l,x 在l中查詢x,x存在時返回x左側的位置,x不存在返回應該插入的位置.這是3存在於列...
perl File Tail模組的使用
最近在做乙個實時資料的工作,需要讀取不斷更新的檔案,類似shell中tail的功能,使用了perl的file tail模組,簡要 如下 use file tail my file file tail new name new file first file date interval 1,maxin...