为什么Python中以全大写命名的常量可以被修改?
Python中的"常量":为什么全大写变量还能被修改?
Python里并没有真正的内置常量类型,大家用全大写字母命名变量只是一种行业约定——用来明确告诉其他开发者:这个变量应该被当作常量,不要随便修改。但Python本身不会给这类变量加任何限制,你硬要改它的话,程序完全不会报错,值也会跟着变。
比如这段代码:
num1 = 20 NUM = 40 print(NUM) if num1 > 10: NUM = NUM - 5 print(NUM)
运行后输出是:
40 35
你以为NUM作为"常量"不会被修改或者会触发错误,但实际上因为这只是命名规范,不是Python的强制规则,所以代码里修改NUM的操作完全有效,最终值变成了35。
如果确实需要创建真正不可修改的常量,可以借助enum.Enum来实现,比如:
from enum import Enum class Constants(Enum): NUM = 40 print(Constants.NUM.value) # 尝试修改会报错 Constants.NUM = 30 # 触发AttributeError: Cannot reassign members.
内容的提问来源于stack exchange,提问作者Tarek Hassan
相关产品推荐
相关产品推荐

