Python中在程序运行时不会被更改的量称之为常量,比如数字7和字符串“abc"在运行时一直都是数字7和字符串”abc“,不会更改成其他的量,这些都是常量,除此之外,还可以定义任意的字符串为指定值的常量。
常量有一个特点,就是:一旦绑定,不能更改。
比如,我们定义标识符”cd“为常量,然后把数字5这个值赋给”cd“这个常量,一旦赋给cd这个常量后,cd这个常量的就一直是5,不能被改变。
常量是指一旦初始化后就不能修改的固定值。c++中使用const保留字指定常量,而python并没有定义常量的保留字。但是python是一门功能强大的语言,python中定义常量需要用对象的方法来创建,下面我们来进行在python中定义常量的实战演示。
#这里主要定义了常量的功能,
# 该类定义了一个方法__setattr()__,和一个异常ConstError, ConstError类继承
# 自类TypeError. 通过调用类自带的字典__dict__, 判断定义的常量是否包含在字典
# 中。如果字典中包含此变量,将抛出异常,否则,给新创建的常量赋值。
# 最后两行代码的作用是把const类注册到sys.modules这个全局字典中。
class _const(object):
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
def __delattr__(self, name):
if name in self.__dict__:
raise self.ConstError, "Can't unbind const(%s)" % name
raise NameError, name
import sys
sys.modules[__name__] = _const()
下面用另一个程序来使用我们的常量:
import const
const.value = 5
print const.value
执行后输出为5,
我们再看它是不是有常量的功能,我们再将6赋给const.value这个常量,如果它有常量的功能,则这个常量就会出错,因为我们的常量已经绑定了值5,而常量一旦绑定就不能更改,所以执行后会报错。
import const
const.value = 6
print const.value
const.value =6
执行后发现报错:
Traceback (most recent call last):
File "D:/���ξ깤��ʵ��/pycharm/python_learning.py", line 4, in <module>
const.value =6
File "D:\Anaconda2\lib\const.py", line 6, in __setattr__
raise self.ConstError, "Can't rebind const(%s)" % name
const.ConstError: Can't rebind const(value)
以后使用常量功能的时候,就先定义一个const的模块,再导入模块去执行即可。
python中在程序运行时可以随着程序的运行更改的量称之为变量,比如我们可以定义一个变量i,并将数字5赋给变量i,然后再将数字7赋给变量i,那么这个时候i的值就变成了7,i的值是可以改变的,那么像i这种可以改变值的量称之为变量。
变量有一个特点,就是:即使赋值,也可以更改。