SUNKAIS OS · READ ONLY

Jarvis

登录后,可以询问自己的任务、项目和记录。

登录后使用
Sun KaisPersonal Research Institute · 私人研究机构

Mathematics · Computational Science · Engineering · Personal Knowledge Systems

更多
SUNKAIS · PERSONAL OS

搜索全站功能

选择 前往

LANG-03 · PROGRAMMING WORKBENCH

Python

用清晰模块、类型提示与自动化测试快速把想法变成可靠工具。

围绕虚拟环境、pyproject、模块入口、pytest 和安全边界组织 Python 项目,让探索代码可以逐步成长为可维护工程。

MENTAL MODEL / 心智模型

先建立正确的程序直觉

模块负责边界,函数负责可测试行为,环境负责依赖隔离;动态类型不等于不需要明确数据契约。

CODE REPOSITORY / 代码仓库锚点

从可测试的目录开始

python-project/
├─ pyproject.toml
├─ README.md
├─ src/app/__init__.py
├─ src/app/__main__.py
├─ src/app/core.py
└─ tests/test_core.py

QUICK START / 第一条命令

先跑通最小闭环

python -m venv .venv && python -m pip install -e . && python -m app

LEARNING ROUTE / 学习路径

从写出代码到守住生产边界

每个节点都包含可复制示例、判断原则与常见陷阱。

01常用方法集合、迭代与错误模型02工程结构src 布局与模块入口03构建运行环境、入口与质量检查04依赖管理声明、隔离与锁定依赖05调试测试pytest、日志与调试器06错误诊断导入、类型与异步故障07安全边界输入、命令与反序列化
01常用方法

集合、迭代与错误模型

用推导式、生成器、上下文管理器和明确异常写出可读数据流。

数据变换代码示例
totals = {
    row["category"]: row["amount"]
    for row in rows
    if row["active"]
}

推导式适合短而清晰的映射/过滤;复杂分支改用具名循环。

文件与编码代码示例
from pathlib import Path

text = Path("data/input.txt").read_text(encoding="utf-8")

pathlib 统一路径操作;文本边界显式指定编码。

窄异常处理代码示例
try:
    payload = json.loads(raw)
except json.JSONDecodeError as exc:
    raise ValueError(f"invalid configuration: {exc.msg}") from exc

只捕获可以处理的具体异常,并用异常链保留根因。

02工程结构

src 布局与模块入口

业务代码、命令入口和测试分离,避免工作目录偶然影响导入。

模块入口代码示例
# src/app/__main__.py
from .cli import main

if __name__ == "__main__":
    raise SystemExit(main())

使用 python -m app 运行,保持导入语义与安装后的包一致。

最小 pyproject代码示例
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "memory-tools"
version = "0.1.0"
requires-python = ">=3.12"

构建后端只是示例;团队应统一工具并提交锁文件(若所选工具支持)。

03构建运行

环境、入口与质量检查

始终通过当前解释器调用模块,避免 pip 与 python 指向不同环境。

创建环境终端命令
python -m venv .venv
# PowerShell
.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip

每个项目独立环境;在 CI 中从清单重建而不是复制 .venv。

运行模块终端命令
python -m app --help

相比直接运行深层脚本,-m 能保持包内相对导入和模块边界。

构建发布物终端命令
python -m pip install build
python -m build

生成 wheel 与 source distribution;发布前在干净环境安装验证。

04依赖管理

声明、隔离与锁定依赖

区分运行依赖与开发依赖,锁定直接和间接版本,并定期审计。

安装当前项目终端命令
python -m pip install -e .

可编辑安装适合开发;依赖应在 pyproject 中声明而不是只存在于某台机器。

检查环境终端命令
python -m pip check
python -m pip list --outdated

pip check 验证已安装依赖兼容性;升级前先看变更并运行完整测试。

05调试测试

pytest、日志与调试器

测试公共行为、记录上下文,并让失败能在最小输入上稳定复现。

参数化测试代码示例
import pytest

@pytest.mark.parametrize(("raw", "expected"), [("2", 2), (" 5 ", 5)])
def test_parse_count(raw: str, expected: int) -> None:
    assert parse_count(raw) == expected

正常值、边界、非法输入分别建例;断言面向行为而非内部实现。

运行与定位失败终端命令
python -m pytest -q
python -m pytest tests/test_core.py::test_parse_count -vv
python -m pytest --pdb

--pdb 在失败点进入调试器;CI 通常不启用交互模式。

结构化日志代码示例
logger.info("import completed", extra={"rows": count, "source": source})

日志记录事件和必要上下文,不记录密码、令牌或完整敏感数据。

06错误诊断

导入、类型与异步故障

完整阅读 traceback,从最后一层异常回溯输入与调用路径。

ModuleNotFoundError诊断清单
确认当前 python 路径和虚拟环境 → python -m pip show 包名 → 使用 python -m app → 检查包布局和安装状态。

不要通过修改 sys.path 或复制文件长期掩盖包装问题。

可变默认参数代码示例
def append_item(item: str, target: list[str] | None = None) -> list[str]:
    result = [] if target is None else target
    result.append(item)
    return result

默认参数在函数定义时只创建一次;用 None 表示每次新建。

coroutine was never awaited诊断清单
确认 async 函数在事件循环中被 await;程序入口用 asyncio.run(main()),不要随意嵌套事件循环。

同步和异步边界应集中在入口层。

07安全边界

输入、命令与反序列化

把外部文本当作数据,不拼接成代码、Shell 命令或 SQL。

安全启动子进程代码示例
subprocess.run(
    ["git", "status", "--short"],
    check=True,
    text=True,
    capture_output=True,
)

参数使用列表;不要把不可信输入拼进 shell=True 字符串。

参数化 SQL代码示例
cursor.execute(
    "SELECT id, title FROM tasks WHERE owner_id = %s",
    (owner_id,),
)

占位符风格取决于数据库驱动;表名等标识符需要驱动提供的安全组合方式。

安全清单诊断清单
密钥放环境/密钥服务;不加载不可信 pickle;上传文件校验大小与类型;依赖定期升级和审计;日志脱敏。

不要提交 .env、虚拟环境、访问令牌或生产数据样本。

PRIVATE CODE VAULT / 私人代码仓库

Python 私人代码与伪代码仓库

把 Python 的练习、工程片段、算法伪代码、验证说明与历史版本保存在登录后的私人空间。

TEXT ONLYRLS PRIVATENO EXECUTION
这里只归档,不运行代码。支持导入与下载纯文本源码;`.mlx`、`.xlsx`、`.accdb` 等二进制容器不会入库。密码、Token、私钥等秘密也会被拒绝,请改用环境变量。
PRIVATE SESSION REQUIRED

登录后打开你的私人仓库

游客只看到这个说明,不会收到、缓存或渲染任何私人源码。

安全登录

REFERENCE SOURCES / 官方与高质量资料

版本差异优先以官方文档为准

先在本站找回路径,再进入原始文档确认版本、平台和完整前置条件。

DELIVERY LOOP / 练习闭环

把每次练习变成可以重新运行的资产

  1. 01 · 定义写清输入、输出、边界与失败行为。
  2. 02 · 最小实现先让单一案例从命令行完整运行。
  3. 03 · 验证增加边界测试、调试信息与质量检查。
  4. 04 · 沉淀提交代码、README、依赖清单和复现命令。