# PythonShowDemo **Repository Path**: mq/python-show-demo ## Basic Information - **Project Name**: PythonShowDemo - **Description**: python 和java 语法对比 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-09-10 - **Last Updated**: 2025-09-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Python学习展示项目 这是一个专为Java工程师设计的Python学习项目,通过对比和实践帮助Java开发者快速掌握Python的核心概念和最佳实践。 ## 📚 项目结构 ### 1. 基础语法对比 (01-12) 按照从基础到高级的顺序排列,建议按序学习: - **01_basic_syntax.py** - Python基础语法与Java对比 - **02_data_types.py** - 数据类型详解 - **03_control_structures.py** - 控制结构对比 - **04_functions.py** - 函数定义与使用 - **05_classes_objects.py** - 面向对象编程 - **06_modules_packages.py** - 模块和包管理 - **07_file_io.py** - 文件输入输出操作 - **08_exception_handling.py** - 异常处理机制 - **09_decorators.py** - 装饰器详解 - **10_generators_iterators.py** - 生成器和迭代器 - **11_context_managers.py** - 上下文管理器 - **12_async_programming.py** - 异步编程 ### 2. 设计模式实现 (design_patterns/) 完整实现23种经典设计模式的Python版本: ### 3. 机器学习示例 (machine_learning_examples/) 位于 `machine_learning_examples/` 目录,包含: - NumPy数组操作和数学计算 - Pandas数据处理和分析 - 机器学习算法实现 - 数据可视化示例 - 编号练习题(`exercises/01_numpy_exercises.py`, `exercises/02_pandas_exercises.py`) #### 创建型模式 (1-5) - **01_singleton.py** - 单例模式 - **02_factory_method.py** - 工厂方法模式 - **03_abstract_factory.py** - 抽象工厂模式 - **04_builder.py** - 建造者模式 - **05_prototype.py** - 原型模式 #### 结构型模式 (6-12) - **06_adapter.py** - 适配器模式 - **07_decorator.py** - 装饰器模式 - **08_facade.py** - 外观模式 - **09_composite.py** - 组合模式 - **10_bridge.py** - 桥接模式 - **11_flyweight.py** - 享元模式 - **12_proxy.py** - 代理模式 #### 行为型模式 (13-23) - **13_chain_of_responsibility.py** - 责任链模式 - **14_command.py** - 命令模式 - **15_iterator.py** - 迭代器模式 - **16_observer.py** - 观察者模式 - **17_mediator.py** - 中介者模式 - **18_interpreter.py** - 解释器模式 - **19_flyweight.py** - 享元模式 - **20_proxy.py** - 代理模式 - **21_bridge.py** - 桥接模式 - **22_composite.py** - 组合模式 - **23_facade.py** - 外观模式 ### 3. Web框架对比 (web_framework_comparison/) Python FastAPI与Java SpringBoot的详细对比: - **01_fastapi_basic.py** - FastAPI基础示例 - **02_springboot_webmvc.java** - SpringBoot WebMVC基础示例 - **03_fastapi_async.py** - FastAPI异步编程 - **04_springboot_webflux.java** - SpringBoot WebFlux异步编程 - **05_database_comparison.py** - 数据库操作对比 - **06_database_pool_best_practices.py** - 数据库连接池最佳实践 ## 🎯 学习路径建议 ### 初学者路径 (1-2周) 1. 从基础语法开始 (01-06) 2. 重点理解Python的动态特性 3. 掌握面向对象编程差异 4. 学习模块和包管理 ### 进阶路径 (2-3周) 1. 深入学习Python特有特性 (07-12) 2. 重点掌握装饰器、生成器、异步编程 3. 开始学习常用设计模式 (创建型和结构型) 4. 实践Web开发基础 ### 高级路径 (3-4周) 1. 完整学习所有设计模式 2. 深入Web框架对比 3. 掌握数据库连接池最佳实践 4. 进行实际项目开发 ## 🔧 环境要求 ### Python环境 ```bash # Python 3.8+ python --version ``` ### 方式一:使用Conda(推荐) ```bash # 创建完整conda环境 conda env create -f environment.yml # 如果遇到网络问题,使用最小化环境 conda env create -f environment_minimal.yml # 激活环境(根据创建的环境选择) conda activate python-learn-show # 或 conda activate python-learn-show-minimal # 更新环境 conda env update -f environment.yml # 删除环境(如需要) conda env remove -n python-learn-show ``` > 📖 **详细指南**:查看 [CONDA_GUIDE.md](CONDA_GUIDE.md) 获取完整的Conda环境管理指南,包括安装、故障排除和最佳实践。 ### 环境验证 安装完成后,运行环境验证脚本确保一切正常: ```bash # 快速验证 python verify_environment.py # 详细验证(显示测试过程) python verify_environment.py --verbose ``` 验证脚本会检查: - Python版本兼容性 - 必需包的安装状态 - 基本功能测试 - Conda环境状态 ### 方式二:使用pip和虚拟环境 ```bash # 创建虚拟环境 python -m venv venv # 激活虚拟环境 # Windows venv\Scripts\activate # macOS/Linux source venv/bin/activate # 安装核心依赖(必需) pip install -r requirements.txt # 安装开发依赖(开发时需要) pip install -r requirements-dev.txt # 安装可选扩展依赖(根据需要) pip install -r requirements-optional.txt ``` ## 📋 项目配置文件详解 ### 🐳 Docker配置 #### `Dockerfile` 多阶段构建的Docker配置文件,提供了完整的容器化解决方案: **主要特性:** - **多阶段构建**:分离构建和运行环境,优化镜像大小 - **安全性**:使用非root用户运行应用,增强安全性 - **多环境支持**:支持开发、生产环境的不同配置 - **健康检查**:内置应用健康检查机制 - **依赖优化**:分层安装依赖,提高构建效率 **构建目标:** - `builder`:构建阶段,安装依赖和编译 - `runtime`:基础运行环境 - `development`:开发环境,包含开发工具和热重载 - `production`:生产环境,使用Gunicorn多进程部署 **使用方法:** ```bash # 构建开发环境镜像 docker build --target development -t pythonlearn:dev . # 构建生产环境镜像 docker build --target production -t pythonlearn:prod . # 运行容器 docker run -p 8000:8000 pythonlearn:dev ``` #### `docker-compose.yml` Docker Compose配置文件,用于多服务编排和开发环境管理: **主要功能:** - **服务编排**:定义应用服务、数据库、缓存等多个服务 - **网络配置**:自动创建服务间通信网络 - **数据持久化**:配置数据卷挂载 - **环境变量管理**:统一管理不同环境的配置 - **开发便利性**:支持代码热重载和调试 **使用方法:** ```bash # 启动所有服务 docker-compose up -d # 查看服务状态 docker-compose ps # 停止所有服务 docker-compose down ``` ### 🛠️ 构建和自动化 #### `Makefile` 项目自动化构建和开发任务管理文件,提供了丰富的开发命令: **主要功能分类:** **环境管理:** - `make setup`:完整项目设置(创建虚拟环境并安装依赖) - `make venv`:创建Python虚拟环境 - `make install`:安装生产依赖 - `make install-dev`:安装开发依赖 - `make update`:更新所有依赖包 - `make clean`:清理临时文件和缓存 **代码质量:** - `make format`:代码格式化(black + isort) - `make lint`:代码检查(flake8 + mypy) - `make security`:安全检查(bandit + safety) - `make check`:完整代码质量检查 **测试:** - `make test`:运行所有测试 - `make test-cov`:运行测试并生成覆盖率报告 - `make test-watch`:监控模式运行测试 **开发服务:** - `make run`:启动FastAPI开发服务器 - `make run-prod`:启动生产服务器 - `make jupyter`:启动Jupyter Notebook **使用方法:** ```bash # 查看所有可用命令 make help # 快速项目设置 make setup # 代码质量检查 make check # 启动开发服务器 make run ``` ### 📦 Python包管理 #### `pyproject.toml` 现代Python项目配置文件,遵循PEP 518标准: **主要配置:** - **构建系统**:定义项目构建工具和依赖 - **项目元数据**:项目名称、版本、作者、描述等信息 - **依赖管理**:生产和开发依赖的声明 - **工具配置**:black、isort、mypy、pytest等工具的配置 - **入口点**:定义命令行工具和插件入口 **工具配置示例:** ```toml [tool.black] line-length = 88 target-version = ['py38'] [tool.isort] profile = "black" multi_line_output = 3 [tool.pytest.ini_options] testpaths = ["tests"] addopts = "-v --tb=short" ``` #### `setup.py` 传统的Python包安装脚本,提供向后兼容性: **主要功能:** - **包安装**:定义包的安装逻辑 - **依赖声明**:指定运行时和开发时依赖 - **元数据定义**:包的基本信息和分类 - **扩展模块**:C扩展模块的编译配置 ### ⚙️ 开发工具配置 #### `pytest.ini` Pytest测试框架配置文件: **主要配置:** - **测试发现**:定义测试文件和目录的查找规则 - **执行选项**:默认的测试执行参数 - **插件配置**:测试插件的相关设置 - **标记定义**:自定义测试标记 #### `.coveragerc` 代码覆盖率工具配置文件: **主要配置:** - **覆盖范围**:定义需要统计覆盖率的代码范围 - **排除规则**:排除不需要统计的文件和代码行 - **报告格式**:配置覆盖率报告的输出格式 - **阈值设置**:设置覆盖率的最低要求 #### `.gitignore` Git版本控制忽略文件配置: **主要内容:** - **Python相关**:`__pycache__/`, `*.pyc`, `.env`等 - **IDE配置**:`.vscode/`, `.idea/`, `*.swp`等 - **构建产物**:`dist/`, `build/`, `*.egg-info/`等 - **测试和覆盖率**:`.pytest_cache/`, `htmlcov/`, `.coverage`等 - **系统文件**:`.DS_Store`, `Thumbs.db`等 ### 🌍 环境配置 #### `.env.example` 环境变量模板文件: **主要用途:** - **配置模板**:提供环境变量的配置示例 - **安全性**:避免敏感信息直接提交到版本控制 - **文档作用**:说明项目所需的环境变量 - **部署指导**:帮助部署时正确配置环境 **使用方法:** ```bash # 复制模板文件 cp .env.example .env # 编辑环境变量 vim .env ``` ### 依赖包分层管理 #### 核心依赖 (requirements.txt) 项目运行的最小必需依赖,经过精简和版本兼容性测试: ``` fastapi>=0.103.2 # 现代高性能Web框架 uvicorn>=0.22.0 # ASGI服务器 pydantic>=2.0.0 # 数据验证和序列化 httpx>=0.24.0 # 异步HTTP客户端 numpy>=1.21.0 # 数值计算基础库 pandas>=1.3.0 # 数据分析库 requests>=2.28.0 # HTTP库 python-dotenv>=0.21.0 # 环境变量管理 click>=8.0.0 # 命令行工具 rich>=12.0.0 # 终端美化 psutil>=5.8.0 # 系统和进程监控 ``` #### 开发依赖 (requirements-dev.txt) 开发、测试、代码质量检查等工具: ``` pytest>=7.0.0 # 测试框架 pytest-cov>=4.0.0 # 测试覆盖率 black>=22.0.0 # 代码格式化 flake8>=5.0.0 # 代码风格检查 mypy>=1.0.0 # 类型检查 isort>=5.10.0 # 导入排序 sphinx>=5.0.0 # 文档生成 ``` #### 可选扩展依赖 (requirements-optional.txt) 数据库、机器学习、图像处理等高级功能: ``` sqlalchemy>=2.0.0 # 数据库ORM pymongo>=4.0.0 # MongoDB驱动 redis>=4.5.0 # Redis客户端 scipy>=1.7.0 # 科学计算库 scikit-learn>=1.0.0 # 机器学习库 matplotlib>=3.5.0 # 绘图库 Pillow>=9.0.0 # 图像处理 ``` #### 安装指南 ```bash # 基础安装(推荐新手) pip install -r requirements.txt # 开发环境完整安装 pip install -r requirements-dev.txt # 包含所有功能的完整安装 pip install -r requirements-optional.txt # 分步安装 pip install -r requirements.txt # 先安装核心依赖 pip install -r requirements-dev.txt # 再安装开发工具 pip install -r requirements-optional.txt # 最后安装可选功能 ``` pytest>=7.4.0 # 测试框架 pytest-asyncio>=0.21.0 # 异步测试支持 black>=23.0.0 # 代码格式化 flake8>=6.0.0 # 代码检查 mypy>=1.7.0 # 类型检查 ``` ### Java环境 (用于对比) ```bash # Java 17+ java --version # Maven 3.6+ mvn --version ``` ## 📦 依赖管理 ### 依赖文件说明 本项目提供了完整的依赖管理文件: - **`requirements.txt`** - 包含项目所需的所有第三方库 - 依赖按功能模块分类,包括: - Web框架相关(FastAPI、Uvicorn等) - 异步编程相关(aiohttp、aiofiles等) - 数据库相关(SQLAlchemy、asyncpg等) - 科学计算和机器学习(NumPy、Pandas等) - 系统监控和工具(psutil、requests等) - 测试和开发工具(pytest、black等) ### 虚拟环境管理 强烈建议使用虚拟环境来管理项目依赖: ```bash # 创建虚拟环境 python -m venv pythonlearn_env # 激活虚拟环境 # Linux/macOS: source pythonlearn_env/bin/activate # Windows: pythonlearn_env\Scripts\activate # 安装依赖 pip install -r requirements.txt # 退出虚拟环境 deactivate ``` ### 依赖更新 ```bash # 查看已安装的包 pip list # 查看过时的包 pip list --outdated # 更新特定包 pip install --upgrade package_name # 批量更新所有包(谨慎使用) pip install --upgrade -r requirements.txt # 生成当前环境的依赖文件 pip freeze > requirements_current.txt # 检查依赖冲突 pip check # 查看包的详细信息 pip show package_name # 查看依赖树 pip install pipdeptree pipdeptree ``` ### 开发环境配置 ```bash # 安装开发工具 pip install black flake8 mypy pytest isort bandit safety # 代码格式化 black . # 导入排序 isort . # 代码检查 flake8 . # 类型检查 mypy . # 安全检查 bandit -r . safety check # 运行测试 pytest # 测试覆盖率 pytest --cov=. --cov-report=html # 运行特定测试文件 pytest tests/test_comparison_examples/test_01_variables_and_data_types.py -v # 运行特定测试类或方法 pytest tests/test_comparison_examples/test_02_functions.py::TestDecorators::test_timing_decorator -v ``` ## 🧪 测试说明 ### 测试结构 项目采用pytest测试框架,测试文件组织如下: ``` tests/ ├── conftest.py # 测试配置和共享夹具 ├── pytest.ini # pytest配置文件 ├── test_comparison_examples/ # 基础语法对比测试 │ ├── test_01_variables_and_data_types.py │ ├── test_02_functions.py │ ├── test_03_decorators.py │ └── ... ├── test_design_patterns/ # 设计模式测试 │ ├── test_01_singleton.py │ ├── test_02_factory_method.py │ └── ... └── test_web_framework_comparison/ # Web框架对比测试 ├── test_01_fastapi_basic.py └── ... ``` ### 运行测试 #### 基本测试命令 ```bash # 运行所有测试 pytest # 运行测试并显示详细输出 pytest -v # 运行测试并显示简短的错误信息 pytest --tb=short ``` #### 运行特定测试 ```bash # 运行特定目录的测试 pytest tests/test_comparison_examples/ -v # 运行特定测试文件 pytest tests/test_comparison_examples/test_01_variables_and_data_types.py -v # 运行特定测试类 pytest tests/test_comparison_examples/test_02_functions.py::TestDecorators -v # 运行特定测试方法 pytest tests/test_comparison_examples/test_02_functions.py::TestDecorators::test_timing_decorator -v # 根据标记运行测试 pytest -m "not slow" -v # 跳过标记为slow的测试 pytest -m "unit" -v # 只运行单元测试 ``` #### 测试覆盖率 ```bash # 生成测试覆盖率报告 pytest --cov=. --cov-report=html # 查看覆盖率报告(在浏览器中打开) open htmlcov/index.html # macOS # 或 xdg-open htmlcov/index.html # Linux # 生成终端覆盖率报告 pytest --cov=. --cov-report=term-missing # 设置覆盖率阈值 pytest --cov=. --cov-fail-under=80 ``` #### 使用Makefile运行测试 ```bash # 运行所有测试 make test # 运行测试并生成覆盖率报告 make test-cov # 运行代码质量检查和测试 make check ``` ### 测试配置 #### pytest.ini配置 项目的pytest配置文件包含以下设置: - 测试发现模式 - 输出格式配置 - 测试标记定义 - 警告过滤规则 - 异步测试支持 #### conftest.py共享夹具 提供以下共享测试夹具: - `sample_dataframe`: 示例DataFrame数据 - `sample_numpy_array`: 示例NumPy数组 - 断言辅助函数:`assert_dataframe_equal`、`assert_array_equal`等 ### 测试最佳实践 1. **测试命名**: 使用描述性的测试方法名 2. **测试隔离**: 每个测试应该独立运行 3. **使用夹具**: 利用pytest夹具管理测试数据 4. **标记测试**: 使用pytest标记分类测试(如@pytest.mark.slow) 5. **异步测试**: 使用pytest-asyncio进行异步代码测试 ### 故障排除 #### 常见测试问题 ```bash # 依赖导入错误 # 确保安装了所有测试依赖 pip install -r requirements-dev.txt # 模块路径问题 # 确保在项目根目录运行测试 cd /path/to/pythonLearnShow pytest # 异步测试问题 # 确保安装了pytest-asyncio pip install pytest-asyncio ``` ## 🚀 快速开始 ### 1. 克隆项目 ```bash git clone cd pythonLearnShow ``` ### 2. 选择启动方式 #### 方式一:使用Makefile(推荐) ```bash # 查看所有可用命令 make help # 一键设置项目(创建虚拟环境并安装依赖) make setup # 激活虚拟环境 source venv/bin/activate # 启动开发服务器 make run ``` #### 方式二:使用Docker Compose ```bash # 启动所有服务(应用+数据库+缓存) docker-compose up -d # 仅启动应用和核心服务 docker-compose up app postgres redis # 启动包含管理界面的完整环境 docker-compose --profile admin up -d # 查看服务状态 docker-compose ps ``` #### 方式三:手动安装 ```bash # 创建虚拟环境 python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate # 安装依赖 pip install -r requirements.txt # 或安装开发依赖 pip install -r requirements-dev.txt ``` ### 3. 环境配置 ```bash # 复制环境变量模板 cp .env.example .env # 编辑环境变量(根据实际情况修改) vim .env # 或使用其他编辑器 ``` ### 4. 验证安装 ```bash # 检查Python版本 python --version # 检查依赖安装 pip check # 运行代码质量检查 make check # 或手动运行 black . && flake8 . # 运行测试 make test # 或手动运行 pytest ``` ## 📁 项目文件结构 ``` pythonLearnShow/ ├── 📄 README.md # 项目说明文档 ├── 📄 requirements.txt # 生产环境依赖 ├── 📄 requirements-dev.txt # 开发环境依赖 ├── 📄 .env.example # 环境变量模板 ├── 📄 .gitignore # Git忽略文件 ├── 📄 Makefile # 自动化任务脚本 ├── 📄 Dockerfile # Docker镜像构建文件 ├── 📄 docker-compose.yml # Docker Compose配置 ├── 📄 python_syntax_knowledge_graph.svg # Python语法知识图谱 │ ├── 📂 基础语法对比/ # Python基础语法学习 │ ├── 01_basic_syntax.py │ ├── 02_data_types.py │ └── ... │ ├── 📂 design_patterns/ # 设计模式实现 │ ├── 01_singleton.py │ ├── 02_factory_method.py │ └── ... │ ├── 📂 web_framework_comparison/ # Web框架对比 │ ├── 01_fastapi_basic.py │ ├── 02_springboot_webmvc.java │ └── ... │ ├── 📂 tests/ # 测试文件 ├── 📂 docs/ # 文档目录 ├── 📂 scripts/ # 脚本文件 ├── 📂 config/ # 配置文件 └── 📂 logs/ # 日志文件 ``` ### 核心配置文件详解 | 文件 | 作用 | 说明 | 用途 | |------|------|------|------| | `requirements.txt` | 核心依赖 | 项目运行的最小必需依赖,经过兼容性测试 | 生产环境、基础功能 | | `requirements-dev.txt` | 开发依赖 | 开发、测试、代码质量检查工具 | 本地开发、CI/CD | | `requirements-optional.txt` | 可选扩展 | 数据库、机器学习等高级功能依赖 | 扩展功能、特定需求 | | `setup.py` | 项目安装配置 | 传统的Python项目配置文件 | 项目打包、分发、安装 | | `pyproject.toml` | 现代项目配置 | 现代Python项目的标准配置文件 | 构建系统、工具配置 | | `.env.example` | 环境变量模板 | 配置数据库、API密钥等敏感信息 | 配置模板,复制为.env使用 | | `Makefile` | 自动化脚本 | 简化常用开发任务(安装、测试、部署等) | 简化常用开发命令 | | `Dockerfile` | 容器化配置 | 支持多阶段构建的Docker镜像 | 多阶段构建,支持开发和生产环境 | | `docker-compose.yml` | 服务编排 | 一键启动完整开发环境 | 完整的开发环境栈 | | `.gitignore` | 版本控制 | 防止敏感文件和临时文件被提交 | 防止敏感文件和临时文件提交 | ### 配置文件使用指南 #### requirements.txt(核心依赖) ```bash # 安装核心依赖 pip install -r requirements.txt # 生成当前环境的依赖文件 pip freeze > requirements.txt # 升级所有包到最新版本 pip install -r requirements.txt --upgrade ``` #### requirements-dev.txt(开发依赖) ```bash # 安装开发依赖(包含核心依赖) pip install -r requirements-dev.txt # 仅安装开发工具 pip install -r requirements-dev.txt --no-deps # 检查依赖冲突 pip check ``` #### requirements-optional.txt(可选扩展) ```bash # 安装可选扩展依赖(包含核心依赖) pip install -r requirements-optional.txt # 按需安装特定功能 pip install sqlalchemy pymongo # 仅安装数据库功能 pip install scipy matplotlib # 仅安装科学计算功能 # 检查所有依赖 pip check ``` #### .env.example ```bash # 创建本地环境配置 cp .env.example .env # 编辑环境变量 vim .env # 验证环境变量 python -c "from dotenv import load_dotenv; load_dotenv(); import os; print('✓ 环境变量加载成功')" ``` #### Makefile使用 ```bash # 查看所有可用命令 make help # 设置开发环境 make setup # 代码质量检查 make lint make format make type-check # 运行测试 make test make test-cov # 启动服务 make run make run-prod # Docker操作 make docker-build make docker-run # 清理环境 make clean ``` #### Docker配置 ```bash # 构建开发镜像 docker build --target development -t python-learn-show:dev . # 构建生产镜像 docker build --target production -t python-learn-show:prod . # 运行容器 docker run -p 8000:8000 python-learn-show:dev ``` #### Docker Compose服务 ```bash # 启动所有服务 docker-compose up -d # 启动特定服务 docker-compose up -d app postgres redis # 启动管理界面 docker-compose --profile admin up -d # 启动监控服务 docker-compose --profile monitoring up -d # 查看服务状态 docker-compose ps # 查看服务日志 docker-compose logs -f app # 进入容器 docker-compose exec app bash # 重启服务 docker-compose restart app # 停止并删除 docker-compose down -v ``` #### setup.py使用 ```bash # 开发模式安装(可编辑安装) pip install -e . # 安装项目及其依赖 pip install . # 安装特定功能模块 pip install .[web] # 仅Web框架相关 pip install .[data] # 仅数据科学相关 pip install .[ml] # 仅机器学习相关 pip install .[dev] # 开发工具 pip install .[all] # 所有功能 # 构建分发包 python setup.py sdist bdist_wheel # 上传到PyPI twine upload dist/* ``` #### pyproject.toml使用 ```bash # 使用pip安装(推荐) pip install . # 使用build工具构建 pip install build python -m build # 使用特定构建后端 pip install setuptools wheel python -m build --wheel # 验证配置 python -c "import tomllib; print('✓ pyproject.toml 格式正确')" # 使用工具配置 black . # 代码格式化 isort . # 导入排序 mypy . # 类型检查 pytest # 运行测试 flake8 . # 代码检查 bandit -r . # 安全检查 ``` ## 🛠️ 依赖包详细说明 ### 📦 核心依赖(requirements.txt) #### Web框架 - 项目核心 - **FastAPI**: 现代、快速的Web框架,项目主要API框架 - **Uvicorn**: ASGI服务器,用于运行FastAPI应用 - **Pydantic**: 数据验证库,FastAPI的核心依赖 #### 数据库驱动 - 项目实际使用 - **SQLAlchemy**: Python最流行的ORM框架,项目数据库操作核心 - **asyncpg**: 异步PostgreSQL驱动,高性能数据库连接 - **motor**: 异步MongoDB驱动,MongoDB操作必需 - **pymongo**: MongoDB官方Python驱动,同步操作支持 - **redis**: Redis Python客户端,缓存和会话存储 - **psycopg2-binary**: PostgreSQL适配器,同步数据库操作 #### 科学计算 - 示例代码使用 - **NumPy**: 数值计算基础库,机器学习示例必需 - **Pandas**: 数据分析库,数据处理示例使用 #### 系统工具 - 项目必需 - **psutil**: 系统监控,连接池监控功能使用 - **requests**: HTTP请求库,基础网络操作 - **python-dotenv**: 环境变量管理,配置加载必需 #### 异步支持 - 项目使用 - **aiofiles**: 异步文件操作,文件处理功能 - **aioredis**: 异步Redis客户端,高性能缓存操作 ### 🔧 开发依赖(requirements-dev.txt) #### 已移至开发环境的功能 - **测试框架**: pytest, pytest-cov, pytest-asyncio等 - **代码质量工具**: black, flake8, mypy, isort, bandit等 - **文档生成**: sphinx, mkdocs等 - **机器学习扩展**: scikit-learn, matplotlib, seaborn, jupyter等 - **高级功能**: 消息队列、图像处理、Excel处理等 - **性能分析工具**: memory-profiler, line-profiler等 ### 📋 依赖精简说明 #### ✅ 保留的核心依赖 - 项目代码中直接使用的库 - Web服务运行必需的组件 - 数据库连接和操作必需的驱动 - 基础科学计算支持 #### ❌ 移除的多余依赖 - 项目未实际使用的库(如celery、opencv等) - 开发和测试专用工具 - 可选功能和扩展库 - 重复功能的替代库 #### 🎯 优化效果 - **依赖数量**: 从80+个减少到13个核心依赖 - **安装速度**: 生产环境安装时间大幅缩短 - **镜像大小**: Docker镜像体积显著减小 - **维护成本**: 减少依赖冲突和安全风险 ### 依赖文件对比 | 文件 | 用途 | 包含内容 | 使用场景 | |------|------|----------|----------| | `requirements.txt` | 生产环境 | 项目运行必需的核心库(精简版) | 部署、生产环境 | | `requirements-dev.txt` | 开发环境 | 开发工具、测试框架、可选功能库 | 本地开发、CI/CD | ### 安装方式对比 #### 方式一:生产环境安装(推荐) ```bash # 仅安装核心依赖,适用于生产环境 # 包含:FastAPI、数据库驱动、基础科学计算库 pip install -r requirements.txt ``` #### 方式二:开发环境安装 ```bash # 安装所有依赖,包括开发工具和可选功能 # 包含:代码质量工具、测试框架、文档生成、机器学习等 pip install -r requirements-dev.txt ``` #### 方式三:按需安装 ```bash # 核心Web框架 pip install fastapi uvicorn pydantic # 数据库支持 pip install sqlalchemy asyncpg motor pymongo redis psycopg2-binary # 基础科学计算 pip install numpy pandas # 开发工具(已移至requirements-dev.txt) pip install -r requirements-dev.txt ``` ### 3. 运行基础示例 ```bash # 运行基础语法示例 python 01_basic_syntax.py # 运行设计模式示例 python design_patterns/01_singleton.py # 运行Web框架示例 python web_framework_comparison/01_fastapi_basic.py ``` ### 5. 启动服务 #### 使用Makefile启动 ```bash # 启动开发服务器 make run # 启动生产服务器 make run-prod # 启动Jupyter Notebook make jupyter ``` #### 使用Docker启动 ```bash # 启动完整开发环境 docker-compose up -d # 仅启动应用服务 docker-compose up app # 启动包含管理界面 docker-compose --profile admin up -d ``` #### 手动启动 ```bash # 启动FastAPI服务 cd web_framework_comparison python 01_fastapi_basic.py # 或使用uvicorn uvicorn web_framework_comparison.01_fastapi_basic:app --reload ``` ### 6. 访问服务 | 服务 | 地址 | 说明 | |------|------|------| | 主应用 | http://localhost:8000 | FastAPI应用 | | API文档 | http://localhost:8000/docs | Swagger UI | | Jupyter | http://localhost:8888 | Jupyter Lab | | pgAdmin | http://localhost:5050 | PostgreSQL管理 | | Redis Commander | http://localhost:8081 | Redis管理 | | Mongo Express | http://localhost:8082 | MongoDB管理 | | Prometheus | http://localhost:9090 | 监控指标 | | Grafana | http://localhost:3000 | 监控面板 | ## 📖 核心特性说明 ### Python vs Java 主要差异 | 特性 | Python | Java | |------|--------|------| | 类型系统 | 动态类型 | 静态类型 | | 语法风格 | 简洁、可读性强 | 严格、冗长 | | 内存管理 | 自动垃圾回收 | 自动垃圾回收 | | 多线程 | GIL限制 | 真正的多线程 | | 包管理 | pip/conda | Maven/Gradle | | 部署方式 | 解释执行 | 编译后执行 | ### Python独有特性 1. **装饰器 (Decorators)** - 函数和类的元编程 - AOP编程支持 - 简化代码结构 2. **生成器 (Generators)** - 惰性求值 - 内存高效 - 简化迭代逻辑 3. **上下文管理器 (Context Managers)** - 资源自动管理 - 异常安全 - with语句支持 4. **异步编程 (Async/Await)** - 原生异步支持 - 高并发处理 - 简洁的异步语法 ## 🛠️ 开发工具推荐 ### IDE选择 - **PyCharm** - 功能最全面 - **VS Code** - 轻量级,插件丰富 - **Jupyter Notebook** - 数据科学和学习 ### 代码质量工具 ```bash # 代码格式化 pip install black isort # 代码检查 pip install flake8 pylint # 类型检查 pip install mypy ``` ### 测试框架 ```bash # 单元测试 pip install pytest pytest-cov # 异步测试 pip install pytest-asyncio ``` ## 📊 性能对比 ### Web框架性能 | 框架 | 请求/秒 | 内存使用 | 启动时间 | |------|---------|----------|----------| | FastAPI | ~20,000 | ~50MB | ~2s | | SpringBoot | ~15,000 | ~200MB | ~10s | ### 开发效率对比 | 指标 | Python | Java | |------|--------|------| | 代码行数 | 1x | 2-3x | | 开发时间 | 1x | 1.5-2x | | 学习曲线 | 平缓 | 陡峭 | ## 🔍 最佳实践 ### 1. 代码风格 - 遵循PEP 8规范 - 使用类型提示 - 编写文档字符串 - 合理使用装饰器 ### 2. 项目结构 ``` project/ ├── src/ │ ├── __init__.py │ ├── models/ │ ├── services/ │ └── utils/ ├── tests/ ├── docs/ ├── requirements.txt ├── requirements-dev.txt # 开发依赖 ├── .env.example # 环境变量示例 └── README.md ``` ### 3. 依赖管理最佳实践 - **使用虚拟环境**: 避免全局包污染 - **固定依赖版本**: 确保环境一致性 - **定期更新依赖**: 获取安全补丁和新功能 - **区分开发和生产依赖**: 减少生产环境包大小 - **使用requirements.txt**: 便于环境复现 - **定期安全检查**: 使用safety检查已知漏洞 - **依赖冲突检查**: 使用pip check验证兼容性 ### 4. 依赖版本管理策略 #### 版本固定策略 ```bash # 精确版本(生产环境推荐) fastapi==0.104.1 # 兼容版本(开发环境可用) fastapi>=0.104.0,<0.105.0 # 最新补丁版本 fastapi~=0.104.1 ``` #### 依赖分离 ```bash # requirements.txt - 生产依赖 fastapi==0.104.1 uvicorn==0.24.0 # requirements-dev.txt - 开发依赖 -r requirements.txt pytest==7.4.0 black==23.0.0 mypy==1.7.0 ``` ### 5. 故障排除指南 #### 常见依赖问题 1. **依赖冲突解决** ```bash # 检查冲突 pip check # 查看依赖树 pipdeptree --warn conflict # 强制重新安装 pip install --force-reinstall package_name ``` 2. **版本兼容性问题** ```bash # 降级到兼容版本 pip install package_name==1.2.3 # 查看可用版本 pip index versions package_name ``` 3. **缓存问题** ```bash # 清除pip缓存 pip cache purge # 不使用缓存安装 pip install --no-cache-dir package_name ``` 4. **权限问题** ```bash # 用户级安装 pip install --user package_name # 使用虚拟环境(推荐) python -m venv venv source venv/bin/activate ``` ### 6. 性能优化建议 #### 安装优化 ```bash # 并行安装 pip install --upgrade pip setuptools wheel # 使用国内镜像源 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ package_name # 配置永久镜像源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/ ``` #### 生产环境优化 ```bash # 仅安装生产依赖 pip install --no-dev -r requirements.txt # 使用wheel包 pip install --only-binary=all -r requirements.txt ``` ### 7. 错误处理 - 使用具体的异常类型 - 记录详细的错误日志 - 实现优雅的降级 - 提供有意义的错误信息 ## 🚀 部署指南 ### 本地开发部署 #### 使用Makefile(推荐) ```bash # 一键设置开发环境 make setup # 启动开发服务器 make run # 代码质量检查 make check # 运行测试 make test ``` #### 使用Docker Compose ```bash # 启动完整开发环境 docker-compose up -d # 查看服务状态 docker-compose ps # 查看日志 docker-compose logs -f app # 停止服务 docker-compose down ``` ### 生产环境部署 #### Docker单容器部署 ```bash # 构建生产镜像 docker build --target production -t python-learn-show:prod . # 运行生产容器 docker run -d \ --name python-learn-app \ -p 8000:8000 \ --env-file .env.production \ python-learn-show:prod ``` #### Docker Compose生产部署 ```bash # 创建生产环境配置 cp docker-compose.yml docker-compose.prod.yml # 修改生产配置 # - 移除volume挂载 # - 使用生产镜像 # - 配置环境变量 # - 添加重启策略 # 启动生产环境 docker-compose -f docker-compose.prod.yml up -d ``` #### 使用Makefile部署 ```bash # 构建Docker镜像 make docker-build # 运行Docker容器 make docker-run ``` ### Kubernetes部署 ```yaml # k8s-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: python-learn-app spec: replicas: 3 selector: matchLabels: app: python-learn-app template: metadata: labels: app: python-learn-app spec: containers: - name: app image: python-learn-show:prod ports: - containerPort: 8000 env: - name: DATABASE_URL valueFrom: secretKeyRef: name: app-secrets key: database-url --- apiVersion: v1 kind: Service metadata: name: python-learn-service spec: selector: app: python-learn-app ports: - port: 80 targetPort: 8000 type: LoadBalancer ``` ### 云平台部署 #### AWS ECS部署 ```bash # 推送镜像到ECR aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin .dkr.ecr.us-east-1.amazonaws.com docker tag python-learn-show:prod .dkr.ecr.us-east-1.amazonaws.com/python-learn-show:latest docker push .dkr.ecr.us-east-1.amazonaws.com/python-learn-show:latest # 创建ECS任务定义和服务 ``` #### Google Cloud Run部署 ```bash # 构建并推送到GCR gcloud builds submit --tag gcr.io/PROJECT-ID/python-learn-show # 部署到Cloud Run gcloud run deploy --image gcr.io/PROJECT-ID/python-learn-show --platform managed ``` ### 监控和日志 #### 使用Docker Compose监控栈 ```bash # 启动监控服务 docker-compose --profile monitoring up -d # 访问监控面板 # Prometheus: http://localhost:9090 # Grafana: http://localhost:3000 (admin/admin) ``` #### 生产环境监控 ```bash # 配置日志聚合 # - ELK Stack (Elasticsearch, Logstash, Kibana) # - Fluentd # - Prometheus + Grafana # 配置错误追踪 # - Sentry # - Rollbar # 配置性能监控 # - New Relic # - DataDog ``` ### 环境变量管理 #### 开发环境 ```bash # 使用.env文件 cp .env.example .env vim .env ``` #### 生产环境 ```bash # 使用环境变量 export DATABASE_URL="postgresql://..." export REDIS_URL="redis://..." export SECRET_KEY="your-secret-key" # 或使用Docker secrets docker secret create db_password db_password.txt # 或使用Kubernetes secrets kubectl create secret generic app-secrets --from-literal=database-url="postgresql://..." ``` ## 📚 扩展学习资源 ### 官方文档 - [Python官方文档](https://docs.python.org/3/) - [FastAPI官方文档](https://fastapi.tiangolo.com/) - [SQLAlchemy官方文档](https://docs.sqlalchemy.org/) ### 推荐书籍 - 《Effective Python》 - 《Python Tricks》 - 《Architecture Patterns with Python》 ### 在线资源 - [Real Python](https://realpython.com/) - [Python Weekly](https://www.pythonweekly.com/) - [Talk Python Podcast](https://talkpython.fm/) ## 🤝 贡献指南 1. Fork项目 2. 创建特性分支 3. 提交更改 4. 推送到分支 5. 创建Pull Request ### 代码贡献规范 - 遵循现有代码风格 - 添加适当的测试 - 更新相关文档 - 确保所有测试通过 ## 📄 许可证 MIT License - 详见 [LICENSE](LICENSE) 文件 ## 📞 联系方式 如有问题或建议,请通过以下方式联系: - 创建Issue - 发送邮件 - 参与讨论 --- **Happy Coding! 🐍** > 这个项目旨在帮助Java工程师快速掌握Python,通过对比学习和实践项目,让转换语言变得更加轻松愉快。