在今天的实际开发中碰到需要定义常量的情形,c语言提供了const关键字来实现,但是python本身却没有提供const,要想在python代码中定义常量,需要我们自己来实现。
1、编写一个const.py的python文件——const.py(要求符合“命名全部为大写”和“值一旦绑定便不可再修改”这两个条件),所用到的代码如下:
class Const(object):
class ConstError(TypeError):
pass
class ConstCaseError(ConstError):
pass
def __setattr__(self, name, value):
if name in self.__dict__://python3.x版本之后的样子
raise self.ConstError("can't change const.%s" % name)
if not name.isupper():
raise self.ConstCaseError("const name '%s' is not all uppercase" % name)
self.__dict__[name] = value
import sys
sys.modules[__name__] = Const()
注意:使用sys.modules[name]可以获取一个模块对象,并可以通过该对象获取模块的属性,这儿使用了sys.modules向系统字 典注入了一个const对象从而实现了在执行import const时实际获取了一个const实例的功能
2、整个工程需要使用的常量都应该定义在一个文件中(我的是project_const.py)例如你将const.py放在了project.utils目录下,常量被定义在apps目录下的project_consts.py文件中,应该这么写:
from apps.utils import const
const.COMPANY = '0'
const.PERSON = '1'
注意:这个导入的语句特别重要,之前就是看不懂怎么使用才出现了差错
3、在其他文件中应用到存储常量的文件夹里的内容时,采用:
from apps.project_consts import const
至此解决了这个python中没有变量的问题,码字不易,希望大家给点个赞!!!