如何在Python中声明变量常量

时间:2015-02-13 11:05:37

标签: python

我想将全局变量声明为常量。我不希望用户更改该值。我可以编写一个使用简单的if语句执行此操作的代码。

if variable == value:
    pass
else:
    sys.exit(0)

但不能对所有变量都这样做。它非常困难,每当我想检查时,我必须编写这4行代码(或嵌套的条件语句),这只会减慢进程。

如果我有100个变量,为所有变量编写if语句是不切实际的。

情况类似于,我有一个配置文件,我正在阅读超过100个变量。我想允许最终用户只更改少量变量。如果用户错误地更改或混淆了配置文件,程序应该终止。

Python中有没有可能将变量定义为常量?

1 个答案:

答案 0 :(得分:-3)

谢谢Prerak Sola,我期待这样的事情:

# Put in const.py...:
class _const:
    class ConstError(TypeError): pass
    def __setattr__(self,name,value):
        if self.__dict__.has_key(name):
            raise self.ConstError, "Can't rebind const(%s)"%name
        self.__dict__[name]=value
import sys
sys.modules[__name__]=_const()

# that's all -- now any client-code can
import const
# and bind an attribute ONCE:
const.magic = 23
# but NOT re-bind it:
const.magic = 88      # raises const.ConstError
# you may also want to add the obvious __delattr__

[参考:ActiveState Recipes]