讲师中心 微信公众号
AI工具推荐 视频效率加速

Python 为什么没有真正的常量?

酷静酱_9777

酷静酱_9777

发布时间:2026-01-19 17:52:02

|

882人浏览过

|

来源于php中文网

原创

Python没有真正的常量,因其设计哲学强调“约定优于强制”,依赖全大写命名等约定而非语法强制,兼顾动态性与简洁性,社区认为责任共担比技术锁更符合工程实际。

python 为什么没有真正的常量?

Python 没有真正的常量,是因为它的设计哲学强调“约定优于强制”,语言层面不提供不可变绑定的语法机制,而是依赖命名规范和开发者自律来表达“不应被修改”的意图。

语言设计选择:动态性优先

Python 是一门动态类型、运行时绑定的语言。变量名本质上是对象的标签(引用),而非内存地址的固定别名。赋值操作(=)只是让名字指向新对象,语言不阻止你对已命名的对象重新赋值。加入编译期或运行期的常量锁定机制(如 C 的 const 或 Java 的 final),会增加类型系统复杂度,也与 Python “简洁、灵活、易读”的核心目标冲突。

用约定模拟常量:全大写 + 下划线

PEP 8 明确建议:模块级的常量应使用 UPPER_CASE_WITH_UNDERSCORES 命名(如 MAX_CONNECTIONS、PI = 3.14159)。这不产生任何技术限制,但向其他开发者发出清晰信号——这个值在逻辑上不应被修改。多数静态检查工具(如 pylint)会将对全大写变量的重新赋值标记为警告(W0622 或 C0103)。

增强约束的常见做法

虽然不能阻止赋值,但可通过以下方式提高“常量”的健壮性:

Java Api Extractor
Java Api Extractor

从 Java 项目中提取 Controller 层接口定义为 JSON 数据。

下载

立即学习“Python免费学习笔记(深入)”;

  • 定义在模块顶层:避免嵌套作用域中意外覆盖;
  • 使用 typing.Final(Python 3.8+):仅用于类型检查(如 mypy),运行时无效,但能配合 IDE 提示错误;
  • 封装进类或模块的只读属性:例如用 @property 返回私有属性,或通过 __slots__ 和自定义 __setattr__ 限制修改(适用于高级场景,但较重);
  • 冻结数据类(dataclass(frozen=True)):适合一组相关常量组成的结构体,实例化后属性不可改。

为什么没加?——社区共识与实用主义

Python 开发者普遍接受“责任共担”原则:如果某人执意修改 DEFAULT_TIMEOUT,那不是语言该拦住的事,而是代码审查、测试覆盖和团队规范该管的事。历史上曾有 PEP(如 PEP 240,2001 年)提议引入 const 关键字,但被明确拒绝——理由正是“它增加了语法负担,却无法真正防止错误,还可能误导新手以为‘安全’了”。

不复杂但容易忽略:Python 的“常量”本质是沟通契约,不是技术锁。写清楚、查得勤、测得全,比追求语法上的不可变更贴近实际工程需求。

热门AI工具

更多
Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

花生AI
花生AI Hot

一款AI视频创作工具,主要用于B站推出的AI视频创作工具,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

相关专题

更多
java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

6284

2023.10.24

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

2358

2023.09.20

golang结构体相关大全
golang结构体相关大全

本专题整合了golang结构体相关大全,想了解更多内容,请阅读专题下面的文章。

5174

2025.06.09

golang结构体方法
golang结构体方法

本专题整合了golang结构体相关内容,请阅读专题下面的文章了解更多。

5351

2025.07.04

Docker Desktop怎么设置端口映射
Docker Desktop怎么设置端口映射

本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。

0

2026.11.03

Docker Desktop镜像构建教程
Docker Desktop镜像构建教程

想使用Docker Desktop将本地项目构建成Docker镜像?本专题围绕镜像构建的实际操作展开,介绍Dockerfile编写、构建命令使用、镜像标签设置和构建日志查看等内容,同时整理镜像无法生成、依赖安装失败及构建缓存异常等问题的排查思路。

0

2026.11.03

Docker Desktop容器创建指南
Docker Desktop容器创建指南

本专题聚焦Docker Desktop容器创建与运行配置,介绍通过本地镜像或远程镜像创建容器的方法,以及容器启动、终端访问、日志查看和基础管理等操作。针对端口冲突、参数配置不当、容器无法启动等情况,也整理了相应的排查方向。

0

2026.11.03

Tailwind CSS 如何制作导航栏和卡片
Tailwind CSS 如何制作导航栏和卡片

用 Tailwind CSS 制作导航栏和卡片,可先搭建语义化结构,再组合 Flex、Grid、间距、圆角与阴影类。这里整理横向导航、移动端菜单、卡片网格及悬停效果的相关文章,帮助你把常见页面组件做得清晰且适配不同屏幕。

20

2026.11.03

Tailwind CSS 响应式布局怎么写
Tailwind CSS 响应式布局怎么写

Tailwind CSS 响应式布局通常从移动端样式写起,再用 sm、md、lg 等前缀调整不同屏幕宽度下的网格、间距和导航。本专题整理断点配置、Grid 与 Flex 自适应布局及常见溢出问题,帮助你逐步完成多设备适配。

0

2026.11.03

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn