參考資料: https://www.processon.com/view/link/5b4ee15be4b0edb750de96ac
內建函式:
作⽤域相關:
locals() 返回當前作用域中的名字
globals() 返回全域性作用域中的名字
迭代器相關:
range() ⽣成資料
next() 迭代器向下執⾏ ⼀次, 內部實際使用了__next__()⽅法返回迭代器的下一個專案
iter() 獲取迭代器, 內部實際使用的是__iter__()方法來獲取迭代器
字元串型別程式碼的執行
eval() 執行字元串型別的程式碼. 並返回最終結果
exec() 執行字元串型別的程式碼
compile() 將字串型別的程式碼變異. 程式碼物件能夠通過exec語句句來執行或者eval()進行求 值
有返回值的字元串形式的程式碼用eval(). 沒有返回值的字元串形式的程式碼用exec(). 一般很少用 到compile()
輸入和輸出相關:
input() 獲取使用者輸入的內容
print() 列印輸出 記憶體相關:
hash() 獲取到物件的雜湊值(int, str, bool, tuple)
id() 獲取到物件的記憶體地址
檔案操作相關:
open() 用於口開啟⼀一個檔案, 建立一個檔案句柄
模組相關:
__import__() 用於動態載入類和函式
幫助: help() 函式用於檢視函式或模組用途的詳細說明
呼叫相關:
callable() 用於檢查一個物件是否是可呼叫的. 如果返回True, object有可能呼叫失敗, 但 如果返回False. 那呼叫絕對不會成功
檢視內建屬性:
dir() 檢視物件的內建屬性, 方法. 訪問的是物件中的__dir__()⽅方法 基礎資料型別相關:
數字相關:
bool() 將給定的資料轉換成bool值. 如果不給值. 返回False
int() 將給定的資料轉換成int值. 如果不給值, 返回0
float() 將給定的資料轉換成float值. 也就是⼩小數
complex() 建立一個複數. 第一個引數為實部, 第二個引數為虛部. 或者第一個引數直接 用字元串來描述複數
進位制轉換:
bin() 將給的引數轉換成二進位制
otc() 將給的引數轉換成八進位制
hex() 將給的引數轉換成十六進位制
數學運算:
abs() 返回絕對值
divmode() 返回商和餘數
round() 四捨五入
pow(a, b) 求a的b次冪, 如果有三個引數. 則求完次冪後對第三個數取餘
sum() 求和
min() 求最小值
max() 求最大值
和資料結構相關:
列列表和元組:
list() 將一個可迭代物件轉換成列列表
tuple() 將一個可迭代物件轉換成元組
reversed() 將一個序列列翻轉, 返回翻轉序列列的迭代器
slice() 列表的切片
字元串相關:
str() 將資料轉化成字元串
format() 與具體資料相關, 用於計算各種小數, 精算等
bytes() 把字元串轉化成bytes型別
bytearray() 返回一個新位元組陣列. 這個數字里的元素是可變的, 並且每個元素的值得範 圍是[0,256)
memoryview() 檢視bytes在記憶體中的情況
ord() 輸入字元找帶字元編碼的位置
chr() 輸入位置數字找出對應的字元
ascii() 是ascii碼中的返回該值 不是就返回u…
repr() 返回一個物件的官方表示形式
資料集合:
dict() 建立一個字典
set() 建立一個集合
frozenset() 建立一個凍結的集合. 凍結的集合不能進行新增和刪除操作
其他相關:
len() 返回一個物件中的元素的個數
sorted() 對可迭代物件進行排序操作
enumerate() 獲取集合的列舉物件
all() 可迭代物件中全部是True, 結果才是True
any() 可迭代物件中有一個是True, 結果就是True
zip() 函式用於將可迭代的物件作為引數, 將物件中對應的元素打包成一個個元組, 然 後返回由這些元組成的開了表. 如果各個迭代器的元素個數不一致, 則返回列表長度與最短的物件相同.
filter() 過濾
map() 會根據提供的函式對指定序列列做對映(lamda)
⼀. lamda匿名函式.
lambda表示的是匿名函式. 不需要用def來宣告, 一句話就可以宣告出一個函式
語法: 函式名 = lambda 引數: 返回值
注意: 1. 函式的引數可以有多個. 多個引數之間用逗號隔開
2. 匿名函式不管多複雜. 只能寫一行, 且邏輯結束後直接返回資料
3. 返回值和正常的函式一樣, 可以是任意資料型別
匿名函式並不是說一定沒有名字. 這里前面的變量就是一個函式名. 說他是匿名原因是我們通 過__name__檢視的時候是沒有名字的. 統一都叫lambda. 在呼叫的時候沒有什麼特別之處. 像正常的函式呼叫即可
⼆. sorted()
排序函式.
語法: sorted(Iterable, key=None, reverse=False)
Iterable: 可迭代物件
key: 排序規則(排序函式), 在sorted內部會將可迭代物件中的每一個元素傳遞給這個函 數的引數. 根據函式運算的結果進行排序
reverse: 是否是倒敘. True: 倒敘, False: 正序
三. filter()
篩選函式 語法: filter(function. Iterable)
function: 用來篩選的函式. 在filter中會自動的把iterable中的元素傳遞給function. 然後 根據function返回的True或者False來判斷是否保留此項資料
Iterable: 可迭代物件
四. map() 對映函式
語法: map(function, iterable) 可以對可迭代物件中的每一個元素進行對映. 分別取執行 function
計算列表中每個元素的平方 ,返回新列表
五. 遞迴 在函式中呼叫函式本身. 就是遞迴
在python中遞迴的深度最大到998 (經測試)
遞迴的應用: 我們可以使用遞迴來遍歷各種樹形結構, 比如我們的資料夾系統. 可以使用遞迴來遍歷該 資料夾中的所有檔案
1 import os 2 def read(filepath, n): 3 files = os.listdir(filepath) # 獲取到當前資料夾中的所有檔案 4 for fi in files: # 遍歷資料夾中的檔案, 這里獲取的只是本層檔名 5 fi_d = os.path.join(filepath,fi) # 加入資料夾 獲取到資料夾+檔案 6 if os.path.isdir(fi_d): # 如果該路徑下的檔案是⽂資料夾 7 print(" "*n, fi) 8 read(fi_d, n+1) # 繼續進行相同的操作 9 else: 10 print(" "*n, fi) # 遞迴出口. 最終在這里隱含著return 11 #遞迴遍歷⽬目錄下所有檔案 12 read(`../old/`, 0)
六. 二分查詢
二分查詢. 每次能夠排除掉一半的資料. 查詢的效率非常高. 但是侷限性比較大. 必須是有 序列才可以使⽤二分查詢 要求: 查詢的序列必須是有序列.