零基础学Python(第2版)
上QQ阅读APP看书,第一时间看更新

2.3.5 常量

常量是指一旦初始化后就不能改变的变量,通常使用全大写字母来表示(可以使用下划线增加可读性)。例如,PI=3.14、TAX_RATE=0.13等。C++中使用const关键字指定常量,Java使用static和final关键字指定常量,而Python并没有提供定义常量的关键字。Python是一门功能强大的语言,可以自己定义一个常量类来实现常量的功能。【例2-6】定义了一个常量模块const。

【例2-6.py】


01     class _const:                                   # 定义常量类_const
02         class ConstError(TypeError): pass     # 继承自TypeError
03         def __setattr__(self,name,value):
04             if name in __dict__.self.keys():     # 如果__dict__中不包含对应的key,则抛出错误
05                 raise self.ConstError("Can't rebind const(%s)"%name)
06             self.__dict__[name]=value
07     import sys
08     sys.modules[__name__]=_const()             # 将const注册进sys.modules的全局dict中

【代码说明】

·这个类定义了一个方法__setattr__()和一个异常类型ConstError,ConstError类继承自TypeError。通过调用类自带的字典__dict__,判断定义的常量是否包含在字典中。如果字典中包含此常量,将抛出异常。否则,给新创建的常量赋值。

·最后两行代码的作用是把const类注册到sys.modules这个全局字典中。

以下代码在use_const.py中调用const,定义常量。


01     import const
02     const.magic = 23
03     const.magic = 33

【代码说明】

·第1行代码导入const模块。

·第2行代码定义了一个常量magic。

·第3行代码修改常量magic的值,抛出异常。


const.ConstError: Can't rebind const(magic)