
上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)