一、模組介紹
1.1 什麼是模組
就像我們小時候玩的樂高積木,我們可以通過樂高積木拼小機械人,拼小飛機等等,每乙個不同色彩大小的積木就可以稱之為模組,反過來看,我們想做乙個功能全面的購物車程式,我們可以在乙個py檔案裡寫出來,但這樣看起來太臃腫了,而且可讀性差,不便於理解,所以我們可以通過函式把每乙個小功能塊進行細分,然後把功能相近或者有類似作用的小功能塊放在一起,這個就是乙個模組,所以模組就是遇阻功能的結合體,通過匯入模組,我們可以來呼叫模組裡預知好的功能。
比如我們的time模組,裡面包含了時間相關的一些功能,我們通過import time 的方式來呼叫
1.2 模組的分類:
1、用py寫的.py的檔案
2、把一套的py檔案放到乙個資料夾裡,打包成乙個包
3、使用c語言編寫並連線到python直譯器的內建模組
4、已被編譯成共享庫或dll的c或c++擴充套件
1.2 為什麼要用模組?
1、通過呼叫別人已經寫好的模組,可以極大的提公升開發效率
我們不需要每次都從最底層開始寫起,而是通過拼接半成品的模組,加上一些其它功能塊就能實現預期功能
2、分門別類,更方便管理
我們自己開發的程式有的可能非常大,需要把它分成一塊一塊,同時有的功能可能被重複呼叫,這個時候做成模組,就可以大幅降低我們的重複低效的工作,也方便後期維護。
1.3 怎麼使用模組?
1.3.1 使用import
a)可以通過呼叫 import kiki 來呼叫kiki.py
b)呼叫的過程:
--在記憶體中建立乙個新的空間名稱把kiki的原始檔放進去
--當使用import kiki時,初始化kiki並執行模組中的**
--建立名字kiki來引用該命名空間
c)獨立的空間名稱
kiki與kiki.money不衝突
d)為模組取別名
如果模組原本的名字很長很難記,可以as的方式,比如:import kikikikiki as ki 將起重新命名為ki,這樣對於後期的編寫擴充套件很有幫助
e)一行匯入多個模組
import time、sys、os
雖然上面的呼叫是可行的,但是不推薦,如果他們之間確實有關聯可以這麼寫,不然最好一行行引用,方便後期的識別
1.3.2 from...import...
a)使用方法
b)與import 對比
好處:使用起來更方便
壞處:容易跟當前執行檔案中的變數名衝突
c)也支援as的重新命名
d)一行匯入多個名字
同上建議,除非名字之間有聯絡,否則不推薦一行引入多個模組
e)全部匯入
from kiki import * 把kiki中所有不時以下劃線開頭的名字都匯入當前的位置
不推薦這種讀法,會導致之前定義的變數名被覆蓋,而且可讀性很差
模組的搜尋路徑:
記憶體中已經載入的模組=>內建模組=>sys.path路徑中包含的模組
soft/├── bin#程式執行檔案目錄
│ └── start.py
#程式開始執行指令碼檔案
├── conf #
配置檔案目錄
│ ├── config.ini #
配置檔案
│ ├── my_log_settings.py
#日誌檔案配置指令碼
│ └── settings.py #
配置指令碼
├── core #
核心模組
│ ├── src.py #
核心功能指令碼 核心邏輯檔案
│ └── __init__
.py├── db
#資料--檔案目錄
├── lib #
庫檔案目錄
│ └── common.py
#庫指令碼檔案 公共的功能
└── log #
日誌目錄
└── all2.log #
日誌檔案
--readme # 文字檔案,介紹專案
啟動檔案一般放在bin裡,或者直接放到根目錄下
# 呼叫sys和os模組import
sysimport
os# 獲取當前所在位置的根目錄
base_dir = os.path.dirname(os.path.dirname(__file__)) #
獲取專案的根目錄
將專案的根目錄新增到環境變數中
# 匯入使用者功能層的src.py檔案
from core import
srcif
__name__ == '
__main__':
src.run() # 執行src中的run方法啟動程式
day14 異常和常用模組
資料持久化 需要持久化的資料通過乙個檔案儲存 需要這個被持久化資料的時候,不直接給值,而是從檔案中讀這個資料 如果被持久化的資料發生了改變,需要把最新的值在重新寫入檔案中 異常捕獲 異常程式報錯又叫程式出現異常,如果在執行程式的過程中,出現異常,那麼這個程式會在出現異常的地方結束 異常捕獲 異常捕獲...
day14內建函式,函式遞迴,模組
內建函式 map 對映 map 函式位址,可迭代物件 map物件 map會將可迭代物件中的每乙個值進行修改,然後對映乙個map物件中,可以再將map物件轉換成列表 元組。注意 只能轉一次。name list egon sean tank name obj map lambda name name 吃...
產品助理day14
一 今日工作 1 補昨天的坑 去掉多餘的字段,新增乙個代表狀態的字段!從而根據狀態明確知道什麼時候是成交的金額,在此之前的都是預估金額 二 今日收穫 1 最近的心病,對應用了解的廣度不夠 2 下手之前先想好,就像寫作文打草稿一樣,另外,要多分析競品 三 今日產品學習 收穫 先來個段子吧 正文 1 產...