Python基本內建模組
一 數學相關模組
math模組 |
decimal模組
|
random模組
|
secrets模組
|
|
應用場景 | 和計算相關 |
Decimal可以避免浮點型計算結果丟失精度的問題 |
偽隨機數模組,並非真正的隨機 |
希望得到更加安全的隨機數。python3.6版本以後,secrets模組用於生成高度加密的隨機數,適於管理密碼、賬戶驗證、安全憑據及機密資料。 |
常見方法 |
ceil(x) 對數值x進行向上取整 floor(x) 對數值x進行向下取整 |
from decimal import getcontext, Decimal |
random() 產生一個[0.0, 1.0) 範圍內的隨機浮點數 randint(a, b) 產生指定範圍[a,b]內的隨機整數 choice(seq) 從序列seq中隨機抽取一個成員 choices(seq, k) 從序列seq中隨機抽取k個成員,以列表格式返回結果 shuffle() 打亂列表中成員的排列循序 sample(s, k) 打亂一個不可變序列並隨機提取k個成員返回新列表
|
import secrets, string |
例項 |
"""ceil 向上取整""" # 如果小數位精度太小,會出現精度丟失問題
|
from decimal import getcontext, Decimal """如果要float浮點型別與decimal型別進行計算,則必須統一型別""" |
import random |
import secrets, string """生成安全Token(令牌),適用於密碼重置、密保 URL 等應用場景""" |
二 時間日期模組
時間模組time | 日期時間模組datetime | 日曆模組calendar | |
應用場景 | 轉化日期格式 |
datatime模組是python內建的加強版time模組,提供更多關於日期(date)、時間(time)、日期時間(datetime)、時間差(timedelta)、時區資訊(timezone)等操作 | 關於年月周幾的操作 |
常見方法 |
time() 獲取本地時間戳,精度在微秒級別 sleep(seconds) 程式睡眠等待指定秒數(seconds=秒) perf_counter() 效能計數器,用於計算程式執行的總秒數,從程式碼第一行開始從0計時。 process_time() 效能計算器,用於計算程式運行當前程序時的總秒數,不計算time.sleep()耗時。 timezone 獲取當前時區與中時區的時間差。東加西減
|
datetime 日期時間物件,常用的屬性有hour, minute, second, microsecond timedelta 時間差,即兩個時間點之間的距離或長度
|
monthcalendar(year, month) 按指定年月返回列表格式的日曆資訊,左起週一 |
常用操作 |
import time """時間元祖->時間戳""" |
now(tz=None)獲取當前本地系統時間的datetime物件,可指定時區 YYYY-mm-dd HH:MM:SS.ffffff fromtimestamp(t, tz=None) 通過時間戳t獲取datetime物件,可指定時區 YYYY-mm-dd HH:MM:SS strptime(date_string, format) 對字串date_string按format格式化字串轉成datetime物件 YYYY-mm-dd HH:MM:SS strftime(fmt) 對datetime物件根據fmt格式化轉成字串 YYYY-mm-dd HH:MM:SS from datetime import datetime from datetime import timedelta |
"""獲取指定年月的資訊列表 (年份,月份) 左起週一""" |
附:
三 資料轉換模組
在資料儲存和讀取過程中,一般需要資料轉換,因為不管網路傳輸也好,還是儲存資料到檔案也罷,都只支援儲存字串或者二進位制bytes型別資料,因此很多時候,針對python中如列表,元組,字典等資料型別,我們都需要進行格式轉換。
# 序列化 把不可直接儲存的資料格式變成可儲存資料格式,這個過程就是序列化過程。例如:字典/列表/物件等 => 字串。 # 反序列化 把可儲存資料格式進行格式還原,這個過程就是反序列化過程。例如:字串還原成字典/列表/物件等。
json模組 | pickle模組 | |
說明 |
是一種輕量級的資料交換格式,易於人閱讀和編寫,常用於不同平臺,不同程式語言之間進行資料傳輸,也常用於對程式設計開發過程中的資料儲存結構或專案配置檔案。 注意:在python中預設就是符合json語法的字串資料。json提供了json字串與其他資料格式之間的序列化和反序列化操作 |
pickle型別處理資料後的資料是二進位制的,所以對於資料相對於json格式而言,更加緊湊(避免json空行佔空間),效能更好。 |
語法 | ||
常用操作 | ||
例項 |
import json """從指定檔案中讀取json資料並反序列化""" |
import pickle |
對比 |
1. json模組常用於將Python資料轉換為通用的json格式傳遞給其它系統或客戶端,常見於web開發,測試開發,運維開發。 3. 都是內建模組,所以都有更優的替代方案。 |
四 安全加密模組
雜湊函式:雜湊的本質,就是把任意長度的輸入內容,通過Hash演算法變成不可逆的固定長度的輸出內容(雜湊值,雜湊值,訊息摘要),輸出內容通常用16進位制的字串表示。雜湊的過程是單向的,只有加密,沒有解密。因此你可以把字串進行雜湊獲取雜湊值,但無法從雜湊值逆轉獲取原始字串。
雜湊碰撞/衝突:兩個不同的資料經過Hash函式計算得到的Hash值一樣。雜湊碰撞無法被完全避免。只能採用各種方法來儘量避免,降低發生的概率。
hashlib模組 | hmac模組 | |
說明 | 雜湊碰撞無法被完全避免。只能採用各種方法來儘量避免,降低發生的概率。python裡面提供了內建函式hash()。 | hmac是一種基於Hash函式和金鑰進行訊息認證的方法,使用hmac函式比標準hash函式更安全,只要改動祕鑰(鹽值),同樣的資料,也會產生不同的雜湊值。 |
例項 |
import hashlib """sha1加密..""" |
import hmac, secrets, string |