python合法常量 Python常量的簡單實現

2021-10-11 12:29:13 字數 949 閱讀 9260

眾所周知,在python中其實並沒有乙個嚴格定義的常量概念。目前所採用的常用約定俗成的方式是採用命名全為大寫字母的方式來標識別常量。但實際上這種方式並不能起到防止修改的功能,而只是從語義和可讀性上做了區分。

那麼,應該怎麼實現乙個簡單的常量呢?

這個就需要借助於python裡的物件導向的實現和描述符(值得一提的是,在python最新版本3.6中,進一步完善了描述符的功能,pep 487: descriptor protocol enhancements)。

話不多說,先出**,再說原理:

class constvalue(object):

class consterror(typeerror):

pass

class constcaseerror(consterror):

pass

def __setter__(self, name, value):

if self.__dict__.has_key(name):

raise self.consterror, 'not allowed change const.'.format(value=name)

if not name.isupper():

raise self.constcaseerror, 'const's name is not all uppercase'

self.__dict__[name] = value

#使用constvalue.google = 100

如上,如果你在對google賦值之後再去修改它的值,就會引發乙個consterror。而如果你的常量名不是全部大寫,則會引發乙個constcaseerror。

接下來簡單解釋一下,首先在常量類中定義了兩個異常型別,用於在發生異常時阻止非法操作並提供恰當的異常資訊以供除錯。接下來重寫了這個類的描述符中的__setter__來進行賦值時阻止非法操作,並把已有的常量名存在類字典(__dict__)中。

python合法常量 python內建常量是什麼?

摘要 學習python的過程中,我們會從變數常量開始學習,那麼python內建的常量你知道嗎?乙個新產品,想熟悉它,最好的辦法就是檢視說明書!沒錯,python也給我們準備了這樣的說明書 python官方文件。想知道python內建常量其實很簡單,在官方文件就可找到。這裡我們來依次熟悉一下,看看這些...

python語言常量 Python 定義常量

python python開發 python語言 python 定義常量 常量在編寫程式的時候,一旦設定就不能再進行變動,常量一種約定俗成的方式,所有字母大寫並用下劃線分隔單詞的方式 如max value,out time等 但是python沒有提供設定常量用法,需要自己自定義類實現常量功能。自定義...

關於c語言中合法的數值常量

1.實數型常量 必須含有小數點,但看到 float f 1.是對的,系統會預設小數點後的值為0,即輸出時為1.00000 2.八進位制常量 開頭必定是0,且後面的數只能在0 7之間。如091就是錯誤的。3.十六進製制常量 以0x或0x開頭,在16進製制中不區分大小寫,即0x6與0x6等價。可包含字母...