1. 程式人生 > >Python 常量與變數

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這種可以改變值的量稱之為變數。

變數有一個特點,就是:即使賦值,也可以更改。