Python 常量与变量

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


之后将这段程序名门为const.py,放在python开发目录下的Lib目录下,Lib目录下主要放一些模块的东西,这样的话,就将实现常量的功能的程序变成了一个模块,以后要使用常量的时候,只需导入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这种可以改变值的量称之为变量。

变量有一个特点,就是:即使赋值,也可以更改。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值