python安装
依赖安装和环境管理工具
pip 包管理器
安装依赖
pip install [包名] [--no-cache-dir]
# pip显示包信息
pip show pip
# 缓存信息
pip cache info
# 清除缓存
pip cache purge
# pip批量删除包
pip freeze >> requirement.txt
pip uninstall -y -r requirement.txt
换源 Windows版,建立文件:C:\Users\wnan\pip\pip.ini
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
uv环境管理
安装:
pip install uv
换源 Windows版,创建文件 C:\Users\wnan\uv\uv.toml
[index]
#url = "https://mirrors.aliyun.com/pypi/simple/"
# 或使用清华源
url = "https://pypi.tuna.tsinghua.edu.cn/simple/"
建立项目的使用指令流程:
# 创建新项目
uv init 项目文件夹名
# 添加项目依赖
uv add 依赖包名
# 创建新虚拟环境 虚拟环境管理(替代 `venv` 和 `virtualenv`):
uv venv 虚拟环境名 -p python版本号
# 激活环境
.\[虚拟环境名的文件夹,和建立的虚拟环境名同名]\Scripts\activate.ps1
# 退出环境
deactivite
常用指令
# 清理缓存条目
uv cache clean
# 清理过期缓存条目
uv cache prune
# 显示 uv 缓存目录
uv cache dir
# 显示工具安装目录
uv tool dir
# 显示已安装的 Python 版本路径
uv python dir
# 将 uv 更新到最新版本
uv self update
# 移除项目依赖
uv remove
# 用于创建和维护包含 pyproject.toml 的 Python 项目:将项目依赖同步到虚拟环境中
uv sync
# 生成项目依赖的锁文件
uv lock
# 在项目环境中运行命令
uv run
# 查看依赖树
uv tree
# 构建项目为可发布包
uv build
用于安装和管理 Python 本身:
# 安装 Python 版本
uv python install
# 查找已安装的 Python 版本
uv python find
# 为当前项目固定使用某个 Python 版本
uv python pin
# 查看 uv 管理的所有 Python 版本
uv python list
# 卸载特定版本的 Python
uv python uninstall 3.11
# 卸载多个版本
uv python uninstall 3.10 3.11 3.12
miniconda笔记
下载地址:mirrors.tuna.tsinghua.edu.cn/anaconda/mi…
环境配置:
D:\software\miniconda\miniconda3 D:\software\miniconda\miniconda3\Scripts //不建议配置,与pip有关 D:\software\miniconda\miniconda3\Library\bin
配置文件位置:C:\User\wnan\.condarc
# 配置内容
channels:
- defaults
envs_dirs:
- D:\software\miniconda\envs
pkgs_dirs:
- D:\software\miniconda\pkgs
auto_activate_base: false
相关指令
# 查看信息
conda info
# conda版本
conda --version
# 查询已创建的虚拟环境
conda env list
# 建立虚拟环境
conda create --name 虚拟环境名 python=版本号
# 激活虚拟环境
conda activate 虚拟环境名
# 退出虚拟环境
conda deactivate
# 删除虚拟环境
conda remove --name 虚拟环境名 -all
# 复制虚拟环境
conda create --name 新虚拟环境名 --clone 被复制的虚拟环境名
venv环境管理
python自带的虚拟环境工具 建立虚拟环境指令流程:
# 创建虚拟环境
python -m venv 虚拟环境名
# 激活
# Windows:
.\[虚拟环境名]\Scripts\activate
# 退出
deactivate
yield
用于创建生成器(Generator),它可以让函数暂停执行并返回一个值,下次调用时从暂停处继续执行。
def sample_generator()->int:
yield 1
yield 2
yield 3
sam_gen = sample_generator()
print(next(sam_gen))
print(next(sam_gen))
print(next(sam_gen))
- 双向通信:
send()方法
def running_average():
total = 0
count = 0
average = None
while True:
term = yield average # 接收外部发送的值 # ←关键点:执行顺序是 先yield,后接收
# 这行代码实际分两步:
# 1. yield average → 暂停,返回 average 给外部
# 2. term = (收到的值) → 恢复时,把 send() 的值赋给 term
total += term
count += 1
average = total / count
avg = running_average()
next(avg) # 预激(prime)生成器
print(avg.send(10)) # 10.0
print(avg.send(20)) # 15.0
print(avg.send(30)) # 20.0
状态: 创建完成 状态: 预激后 状态: send(10)后 状态: send(20)后
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ 未启动 │ → │ 停在yield │ → │ 计算完成 │ → │ 停在yield │
│ │ next │ 可接收值 │ send │ 停在yield │ send │ 可接收值 │
└──────────┘ └──────────┘ └──────────┘ └──────────┘
↑ ↑
返回 None 返回 10.0
- yield from:委托子生成器(Python 3.3+)
def sub_generator():
yield 1
yield 2
def main_generator():
yield 'A'
yield from sub_generator() # 委托给子生成器
yield 'B'
print(list(main_generator())) # ['A', 1, 2, 'B']
# 处理嵌套结构
def flatten(nested_list):
for item in nested_list:
if isinstance(item, list):
yield from flatten(item) # 递归展平
else:
yield item
nested = [1, [2, [3, 4], 5], 6]
print(list(flatten(nested))) # [1, 2, 3, 4, 5, 6]
logging--日志
快速配置
import logging
logging.basicConfig(level=logging.INFO,format='%(asctime)s - %(filename)s - %(levelname)s - %(message)s')
logging.info("日志信息")
logging.warning("waring 信息")
输出:
2026-02-23 21:46:17,699 - main.py - INFO - 日志信息
2026-02-23 21:46:17,699 - main.py - WARNING - waring 信息
为了防止混淆,这里列出几个相似的“名字”字段供你参考:
- %(filename)s:文件名(包含后缀),例如 demo.py。
- %(module)s:模块名(不包含后缀),例如 demo。
- %(pathname)s:文件的完整路径,例如/Users/user/project/demo.py。
- %(name)s:Logger 对象的名字(默认是 root,如果你使用了
getLogger(__name__),它显示的是包路径,如 main.core)。 - %(funcName)s:方法的名字