当你看到 MAX_CONNECTIONS = 100 和 current_user = “张三” 时,是否思考过它们本质的区别?在Python中,常量与变量的误用堪称初级程序员的“头号杀手”,今天我们就来彻底讲清这个看似简单却暗藏玄机的知识点!

一、变量:善变的“记忆便签”
变量就像你桌上的临时便签——今天写“待办会议”,明天就能改成“已完成”。在Python中,变量有三大特点:
- 即用即定义
count = 0 就完成了一次赋值,无需提前声明类型 - 指向灵活
同一个变量可以随时指向不同类型的数据:
```python
value = 10 # 先是整数
value = "文本" # 瞬间变成字符串
```
引用传递
变量存储的是对象的“地址”而非对象本身,这导致了一个经典陷阱:
```python
list1 = [1, 2]
list2 = list1 # 两个变量指向同一个列表!
list2.append(3) # list1也变成了[1, 2, 3]
```
心理学原理:人类大脑对可变信息会自然降低重点关注程度,这就是为什么随意命名的变量(如x、temp)会让代码在几天后变得难以理解!

二、常量:不该被忽视的“交通标志”
与变量相反,常量应该是程序中的“固定路标”。但Python实则没有真正的常量!我们靠的是全大写命名约定:
PI = 3.1415926 # 数学常数
DATABASE_URL = "postgresql://..." # 数据库连接
MAX_RETRY_TIMES = 3 # 最大重试次数
关键要点:
- 全大写命名是一种社会契约,告知团队:“修改我可能引发灾难!”
- 常量一般定义在模块顶部,一眼就能看到“配置地图”
- 实际开发中,重大常量提议放在 config.py 中聚焦管理

三、90%人踩过的实际大坑
场景1:以为是常量,结果被修改
# settings.py
TIMEOUT = 30
# 某个深层函数中
def connect():
global TIMEOUT
TIMEOUT = 60 # 灾难!全局配置被意外修改
解决方案:使用 @property 或配置类封装,或者直接使用 configparser 读取配置文件。

场景2:可变对象作为默认参数
def add_user(user, user_list=[]): # 坑!默认列表在函数定义时创建
user_list.append(user)
return user_list
第一次调用 add_user(“张三”) 返回 [“张三”],第二次调用却返回 [“张三”, “李四”]!
正确做法:
def add_user(user, user_list=None):
if user_list is None:
user_list = []
user_list.append(user)
return user_list

四、工程实践:让你的代码更专业
- 变量命名要有“信息量”
elapsed_time_in_days 远比 days 更清晰 - 常量分组定义
- # 数据库配置
DB_HOST = 'localhost'
DB_PORT = 5432# 业务限制
MAX_FILE_SIZE = 1024 * 1024 # 1MB - 使用枚举取代魔法数字
```python
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
```

练习代码
源码已备,自取。 都是项目里即插即用的干货,希望能提升你的效率。
luck_number=8 #创建一个整型变量luck_num,并为其赋值为8
my_name='沪上程序员流浪记' # 字符串类型的变量
print('luck_number的数据类型是:',type(luck_number)) #type打印定义的变量是什么数据类型
print('my_name的数据类型是:',type(my_name))
'''
以上代码运行结果
luck_number的数据类型是: <class 'int'>
my_name的数据类型是: <class 'str'>
'''
# Python动态修改变量的数据类型,通过赋不同类型的值就可以直接修改
luck_number="上海欢迎你"
print('luck_number的数据类型是:',type(luck_number))
'''
以上代码运行结果
luck_number的数据类型是: <class 'str'>
'''
#在Python中允许多个变量指向同一个值
no=number=1024 # no与number都指向了1024这个整数值
print(no,number)
print(id(no)) #id()查看对象的内存地址
print(id(number))
'''
以上代码运行结果
1024 1024
1894480787120
1894480787120
'''
pi=3.1415926 # 定义了一个变量
PI=3.1415926 # 定义了一个常量
结语
理解变量与常量的本质,不仅是掌握语法,更是培养编程思维的关键。变量赋予代码灵活性,常量赋予代码稳定性,二者的合理使用直接决定了代码的质量层级。
思考题:你的项目中是否有应该设为常量却被误用为变量的例子?欢迎在评论区分享你的“踩坑经历”!
点赞转发,让更多开发者写出更健壮的代码!
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
您必须登录才能参与评论!
立即登录



讲得好