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這個全域性字典中。
之後將這段程式名門為const.py,放在python開發目錄下的Lib目錄下,Lib目錄下主要放一些模組的東西,這樣的話,就將實現常量的功能的程式變成了一個模組,以後要使用常量的時候,只需匯入const這個模組即可。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這種可以改變值的量稱之為變數。
變數有一個特點,就是:即使賦值,也可以更改。