Python 基礎教程 (莫煩 Python 教程)
Threading 學會多線程 (莫煩 Python 教程)
Multiprocessing 讓你的多核計算機發揮真正潛力 (莫煩 Python 教程)
Tkinter 做簡單的窗口視窗 (GUI 莫煩 Python 教程)
《零基礎入門學習Python》(小甲魚) P65-78
zip
把多個元素對應,用list顯示
map
把function與參數對應,用list顯示
lambda
簡單定義,例如func = lambda x,y:x+y
copy.copy()
淺複製,變量id不同,但元素可能相同
deepcopy
深複製,任何都不相同
set
去除重合的元素
正則表達
import re
print(re.search(r"a[0-9a-zA-Z]c", "XXXXXXX")) #r表示不把字符串轉義處理
\d
所有數字 \D
不是數字
\s
所有空白符 \S
不是空白符
\w
[a-zA-Z0-9] \W
不是\w
\b
空白字符,只在開頭或結尾 \B
空白字符,不在開頭或結尾
\
轉義
( )\數字
()內容再次重複
^
開頭 $
結尾
|
或
.
任何字符 (除了 \n) ?
前面的字符可有可無
*
重複零次或多次
+
重複一次或多次
{n,m}
重複 n 至 m 次
{n}
重複 n 次
[ ]
字符類
group
分組
findall
所有匹配,返回列表
replace
找到匹配並替換
split
分裂
compile
編譯
多線程 threading
在一個腳本中加速運行
import threading
threading.active_count()
獲取已激活的線程數
threading.enumerate()
查看所有線程信息
threading.current_thread()
查看正在運行的線程
thread = threading.Thread(target=XXXX)
定義新的線程
thread.start()
讓線程開始工作
thread.join()
控制多個線程的執行順序
from queue import Queue
儲存進程結果
GIL 不一定有效率,本質是線程切換
lock=threading.Lock()
lock.acquire()
lock.release()
多進程 multiprocessing
利用多核CPU加速運行
import multiprocessing as mp
p1 = mp.Process(target=XXX,args=(XX,XX))
定義新的進程
mp.start()
mp.join()
mp.Queue()
進程池 pool
pool = mp.Pool()
池子對應一個函數
res = pool.map(job, range(10))
返回多個結果
apply_async()
只能放入一組參數,並返回一個結果
共享內存
l = mp.Lock()
定義一個進程鎖。需要作爲參數傳入。
l.acquire()
l.release()
窗口視窗 tkinter
import tkinter as tk
window = tk.Tk()
window.title('my window')
window.geometry('200x100')
theLabel = tk.Label(window, text="this is label") #單行文本
theLabel.pack() #自動調節尺寸位置
window.mainloop()
變量
StringVar
IntVar
組件
Frame
LabelFrame
Label
textvariable
.config
Button
command=函數
Checkbutton
多選框
Radiobutton
單選框
Listbox
很多選項 listvariable
.insert
.delete
Scrollbar
Scale
Entry
輸入框 show='*'
.get
Text
多行文本 .insert
Canvas
畫圖 .create_
.move
PhotoImage
Menu
add_
Menubutton
Message
Spinbox
PanedWindow
Toplevel
佈局管理器
pack
添加順序 side
grid
行/列 row column padx pady ipadx ipady
place(x=XX,y=YY)
標準對話框
messagebox
彈窗 .showinfo
.showwarning
.showerror
askquestion
askyesno
asktrycancel
askokcancel
filedialog
colorchooser