导图社区 Python
这是我辛辛苦苦收集的Python知识,走过路过不要错过,点个赞吧!这里我分成了三个大部分,每个部分都是我精心写的。如果有问题可以回复我哦!
编辑于2025-10-19 17:58:32Python
基础知识
变量
变量名 = 值
变量名: 类型 = 值
可以是任意类型
类型
int
5, 1, 66
float
8.6, 100.0
str
"Hello, Python!", 'char'
boolean
True, False
list
[False, 2, "Hello"]
dict
a, b = a[b] = {}, 5
bytes
b"bytes-like"
运算符
赋值运算符
=
给变量赋值,详情请看第一章第一节
+=
这是一个复合型赋值运算符,比如 a += 1等价于a = a + 1
-=
这是一个复合型赋值运算符,比如 a -= 1等价于a = a - 1
*=
这是一个复合型赋值运算符,比如 a *= 1等价于a = a * 1
/=
这是一个复合型赋值运算符,比如 a /= 1等价于a = a / 1
//=
这是一个复合型赋值运算符,比如 a //= 1等价于a = a // 1
%=
这是一个复合型赋值运算符,比如 a %= 1等价于a = a % 1
...
...
逻辑运算符
==
一个东西是否等于另一个东西,比如a == b
!=
一个东西是否不等于另一个东西,比如a != b
or 或者 |
或者,比如a or b
and 或者 &
和,比如a and b
not
逻辑非,比如not a
算术运算符
+
加法,比如a + b
-
减法,比如a - b
*
乘法,比如a * b
/
除法,比如a / b
//
整除,比如a // b
%
求余,比如a % b
<<
左移,比如a << b
>>
右移,比如a >> b
>>>
无符号右移,比如a >>> b
管理优先级运算符
()
括号,优先运行括号里面的表达式
[]
中括号,虽然平时用于列表,但是这里是数学中的中括号
{}
花括号,相当于数学里的花括号
语法
if-else
用法
if condition: block1
elif condition2: block2
elif condition3: block3
elif condition n: block n
else: block n+1
短路求值
表达式为True的结果 if 表达式 else 表达式为false的结果
如果表达式不对,或者在不该用的地方,用这种格式就会报错
循环语句
for
for 变量名 in Iterable: block
完成一遍自动加1
while
while condition: block
完成一遍手动加1
捕错语句
try: block
except [Exception | ExceptionGroup[ as 变量名]]: block
else: block
finally: block
assert
assert condition [, string]
可能会抛出AssertionError错误,建议搭配try-except
核心技术
函数
声明
def 函数名(): block
参数
def 函数名(参数1, 参数2, 参数n): block
return语句
return 值
内置函数
len, max, min, map, filter, range
在builtins.pyi
类
声明
class 类名(父类)
方法
def 方法名(self, 参数1, 参数2, 参数n): block
特殊方法
__init__(不能有返回值)
类名()
__call__
实例名()
__str__, __repr__
print(实例名)
__reverse__
reverse(实例名)
__del__
del 实例名
...
...
属性
@property def 属性名(self): return 值
self.属性名 = 值
开头是两个"_",那是私有变量
需要通过"类对象.类名__私有变量名(私有变量名不含下划线)"
父类
enum.Enum
所继承的子类会变成枚举类
室内的不需要初始化的属性,会在VSCode里面显示成暗蓝色
import enum.Enum class AttributesClass(enum.Enum): KiWi = "kiwi" Melon = "🍈"
typing.Sequence
子类会变成序列类型
Sequence[int, int, int]可以用在RGB色彩上
列表推导式
list = [列表元素(可在这里进行其他操作,不可进行的操作除外) for 列表元素 in 列表 条件(可选)]
这种格式可以将for语句来简化
生成器
结构
def generator(参数1, 参数2, 参数n): ... yield 生成器返回参数 ... return 函数返回参数
返回值
Generator[None, 生成器返回值, 函数返回值]
生成器推导式
(生成器返回值 for 生成器返回值 in 返回值列表)
注意这里不是元组推导式
高级应用
装饰器
定义
def 装饰器名(func): def inner(参数1, 参数2, 参数n): block return inner
def 装饰器名(装饰器参数1, 装饰器参数2, 装饰器参数n): def object(func): def inner(参数1, 参数2, 参数n): block return inner return object
class 类装饰器: def __init__(self, func): self.func = func def __call__(self, 参数1, 参数2, 参数n): return 值
class 类装饰器: def __init__(self, func): self.func = func def __call__(self, 装饰器参数1, 装饰器参数2, 装饰器参数n): def inner(参数1, 参数2, 参数n): block return inner
调用
@装饰器名[(参数1, 参数2, 参数n)]
内置变量
__name__
在本身Python文件📄里 = "__main__"
在其他文件📄中 = "主动导入的文件名"
__doc__
文件📄开头的三重字符串
在VSCode中,鼠标🖱浮在上面时,会显示__doc__
代码结构
import语句放在最前面(除注释和文档字符串以外)
import语句其他情况下也可以放在别的地方
import语句后面就是主体结构
主体结构里面可以有注释,也可以有文档字符串
最后就是代码运行主程序
如果想指在本文件运行的时候才运行主程序的话,就可以把主程序放在if __name__ == "__main__":里面
最后的最后就是使用图形界面模块时的主循环,比如tk.Tk().mainloop(),ursina.Ursina().run(), PyQt6.QMainWindow().show()和sys.exit(PyQt6.QApplication(sys.argv).exec())
项目实战
库
标准库
random 随机
string 字符
typing 类型
types 类型表示
os, filecmp, shutil 文件📄管理
time 时间⌚
threading 线程
multiprocessing 进程
gevent 协程
tkinter 图形化
smtplib 邮件处理
difflib 字符串比较
email, smtplib 邮件
logging 日志操作
socket 远程通信
math 数学
csv CSV文件操作
urllib.request 爬虫
typing_extension 类型扩展
sys main信息
datetime 日期时间⌚
re 正则表达式
zipfile 压缩文件📄操作
difflib 不同判断
sqlite3 后台数据库
socket 套接字
enum 枚举类型
无需安装,导入即用
非标准库
pygame 2D游戏
ursina panda3d 3D,2D游戏
stitching 图片拼接
pillow 图片
tqdm, progress, alive-progress 进度条
openpyxl, xlwings, docx, pptx Excel操作
wordcloud 词云☁
qrcode 二维码
requests 网络爬虫
barcode 条形码
json JSON数据操作
appium, selenium 动态解析
pyquery, bs4, lxml.etree 网页解析
pandas 数据操作
OpenCV 图片操作
matplotlib, seaborn 数据统计
pyaudio, wave, gtts 音频(mp3)操作
IPy IP地址解析
faker 假数据
phone 手机号解析
dlib 人脸识别
skimage 图片学习
sklearn, torch, tensorflow 机器学习
xpinyin 拼音
chardet 字符串编码判断
pytesseract 图片字符串识别
amzqr 鬼畜二维码👻
pyttsx3 鬼畜语音
PyQt5, PyGTK, PySide, flexx, wxPython, Kivy GUI图形化工具
fake_useragent 假头信息ℹ️
gradio 机器学习自动图形化工具
numpy 科学数组和计算
win32com Windows的COM组件服务进程
PyPDF2, pdfminer PDF文档处理
webbrowser 网页浏览
pickle 序列化操作
jieba 中文分词
pyzbar 二维码解析
pymysql, cx_Oracle 数据库
psutil 平台信息ℹ️
dnspython DNS查询访问
nmap 端口信息ℹ️扫描
moviepy 视频(mp4)操作
base64 Base64编码
pyautogui 自动化工具
pyscreeze 自动截图
ttkbootstrap 图形化工具拓展
whisper 语音识别/语言翻译
打开终端(Terminal),pip install 库==版本,导入即用
导入方式
import module
from module import name
import module as name
from module import *
from module import name as rename
导入即用
实例
鼠标坐标定位
import tkinter as tk def onmousemove(event): xVar.set(event.x) yVar.set(event.y) locLab.config(text=f"X:{xVar.get()}, Y:{yVar.get()}") root = tk.Tk() root.geometry("600x500") xVar = tk.IntVar(root, value=0) yVar = tk.IntVar(root, value=0) locLab = tk.Label(root, text=f"X:{xVar.get()}, Y:{yVar.get()}") locLab.pack(side="bottom", fill="y") root.bind("<Motion>", onmousemove) root.mainloop()
随机移动的蓝色小球
import tkinter as tk import random WIDTH = 800 HEIGHT = 600 def randpos(): return random.randint(0, WIDTH), random.randint(0, HEIGHT), random.randint(0, WIDTH), random.randint(0, HEIGHT) root = tk.Tk() root.title("随机移动的蓝色小球") root.geometry("800x600") canvas = tk.Canvas(root, width=WIDTH, height=HEIGHT) canvas.pack(fill="both", expend=True) ball_id = canvas.create_oval(*randpos()) root.after(17, lambda: canvas.move(ball_id, *randpos())) root.mainloop()
计时器
import tkinter as tk from tkinter.messagebox import askokcancel def start() time = int(timeVar.get()) timeVar.set(60) if time == 0: return def aftering() def inner() if timingVar.get() == 0: del timingVar label.config(textvariable=None, text="时间到了") timingVar.set(timingVar.get() - 1) toplevel.after(1000, inner) toplevel = tk.Toplevel(root) toplevel.title("计时中...") toplevel.geometry("800x600") timingVar = tk.IntVar(time) label = tk.Label(root, textvariable=timingVar) label.pack(fill="both", expend=True) aftering() root = tk.Tk() root.title(小型计时器) root.geometry("800x600") timeVar = tk.IntVar(root, value=60) #这里默认一分钟,可自行调整 timeEntry = tk.Entry(root, variable=timeVar) timeEntry.grid(row=0, column=0, rowspan=2) startButton = tk.Button(root, text="Start", command=start) startButton.grid(row=0, column=1) def onclose(): if askokcancel("提示", "要离开吗?"): root.destroy() tk.Button(root, text="Quit", command=onclose).grid(row=1, column=1) root.mainloop()
编辑错误请反馈
如有问题请反馈😘😘😘