Python 如何区分配置与代码?

冷漠man

冷漠man

2026-01-18

409人浏览

原创

配置和代码必须严格分离,代码只负责加载、类型转换与校验配置,配置应通过环境变量、.env文件、yaml/json/toml或远程配置中心等外部源管理,敏感信息严禁硬编码。

python 如何区分配置与代码?

配置和代码在 Python 项目中必须严格分离——代码定义“怎么做”,配置决定“做什么”或“用什么值”。混在一起会导致环境切换困难、安全风险(如密钥硬编码)、协作冲突和部署失败。

配置应独立于代码文件

把配置写进 .py 文件(比如 config.py)看似方便,实则危险:容易被意外提交到 Git、难以按环境区分、无法被非开发者安全修改。正确做法是使用外部配置源:

  • 环境变量(推荐用于敏感项和运行时差异,如 DATABASE_URLDEBUG=True
  • .env 文件(配合 python-dotenv 加载,适合本地开发)
  • YAML/JSON/TOML 配置文件(适合结构化、多环境配置,如 config.yaml
  • 远程配置中心(如 Consul、Apollo,适合微服务集群)

代码只负责读取和校验配置

Python 代码不应包含任何具体配置值,只做三件事:加载、类型转换、必要校验。例如:

✅ 好的做法:

import os<br>from pydantic import BaseSettings<br><br>class Settings(BaseSettings):<br>    db_url: str = os.getenv("DATABASE_URL", "")<br>    debug: bool = False<br><br>    class Config:<br>        case_sensitive = False<br><br>settings = Settings()

❌ 避免的做法:

ApiPost接口调试与文档生成工具
ApiPost接口调试与文档生成工具

ApiPost是一个支持团队协作,支持模拟POST、GET、PUT等常见请求,并可直接生成文档的API调试、管理工具,ApiPost是后台接口开发者或前端、接口测试人员的工作必备工具。快速生成、一键导出API文档。感兴趣的朋友快来下载吧。软件说明ApiPost官方版是一款十分出色的接口调试与文档生成工具,ApiPost官方版界面美观大方,功能强劲实用,支持团队协作,支持模拟POST、GET、PUT等常见请求,是后台接口开发者或前端、接口测试人员的工作必备工具。软件特色更方便支持接口调试的同时快速生成、一键

下载
# config.py<br>DEBUG = True<br>DATABASE_URL = "postgresql://user:pass@localhost/db"

这样写会让测试环境也连上生产数据库,且密码明文暴露。

按环境分层管理配置

不同环境(dev/staging/prod)应有不同配置,但共用同一套代码。推荐结构:

  • config/base.py:通用默认值(如日志级别、基础路径)
  • config/dev.py:本地调试专用(启用 debug、mock 服务)
  • config/prod.py:生产约束(关闭 debug、设置超时、启用监控)
  • 通过 ENV=prod python app.py 或环境变量动态加载对应配置

敏感信息绝不进代码仓库

API 密钥、数据库密码、JWT 秘钥等必须由运维或 CI/CD 注入,而非写在文件里。可借助:

  • os.getenv("SECRET_KEY") 直接读取系统环境变量
  • Kubernetes Secrets / Docker Swarm configs
  • CI/CD 工具的加密变量(GitHub Actions Secrets、GitLab CI Variables)
  • 本地开发用 .env,但确保 .gitignore 包含它

不复杂但容易忽略:配置不是代码的附属品,而是系统行为的控制开关。把它管好,项目才真正可维护、可迁移、可信任。

Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2023.08.07

1561

5

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.23

1426

1

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

2023.10.13

588

3

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

2025.09.10

1336

7

C++类型转换方式
C++类型转换方式

本专题整合了C++类型转换相关内容,想了解更多相关内容,请阅读专题下面的文章。

2025.07.15

1114

23

github中文官网入口 github中文版官网网页进入
github中文官网入口 github中文版官网网页进入

github中文官网入口https://docs.github.com/zh/get-started,GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。 通过将代码存储在GitHub 上的“存储库”中,你可以: “展示或共享”你的工作。 持续“跟踪和管理”对代码的更改。

2026.01.21

7598

27

GitHub官网入口版本汇总
GitHub官网入口版本汇总

本专题整合了GitHub入口版本地址汇总,阅读专题下面的文章了解更多详细内容。

2026.04.02

454

19

自建git服务器
自建git服务器

git服务器是目前流行的分布式版本控制系统之一,可以让多人协同开发同一个项目。本专题为大家提供自建git服务器相关的各种文章、以及下载和课程。

2023.07.05

2631

9

git和svn的区别
git和svn的区别

git和svn的区别:1、定义不同;2、模型类型不同;3、存储单元不同;4、是否拥有全局版本号;5、内容完整性不同;6、版本库不同;7、克隆目录速度不同;8、分支不同。php中文网为大家带来了git和svn的相关知识、以及相关文章等内容。

2023.07.06

975

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PyCharm官方快速入门指南
PyCharm官方快速入门指南

共0课时 | 0人学习

Python函数定义官方教程
Python函数定义官方教程

共0课时 | 0人学习

Python 3.14.6官方文档
Python 3.14.6官方文档

共0课时 | 0人学习