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