python基础教程:常量 (最全常量解析)
一、常量
變量是變化的量,常量則是不變的量。python中沒有使用語(yǔ)法強(qiáng)制定義常量,也就是說(shuō),python中定義常量本質(zhì)上就是變量。如果非要定義常量,變量名必須全大寫。
AGE_OF_NICK = 19 print(AGE_OF_NICK) 19 AGE_OF_NICK = AGE_OF_NICK + 1 print(AGE_OF_NICK) 20如果是常量,那就沒必要更改,所以python就只制定了一個(gè)規(guī)范,而沒指定常量的語(yǔ)法,因此常量也是可以修改的,但不建議。
在c語(yǔ)言中有專門的常量定義語(yǔ)法,const int age = 19;,一旦定義age為常量,更改age即會(huì)報(bào)錯(cuò) 。
二、內(nèi)置常量
內(nèi)置常量
有少數(shù)的常量存在于內(nèi)置命名空間中。 它們是:
False bool 類型的假值。 給 False 賦值是非法的并會(huì)引發(fā) SyntaxError。True bool 類型的真值。 給 True 賦值是非法的并會(huì)引發(fā) SyntaxError。None NoneType 類型的唯一值。 None 經(jīng)常用于表示缺少值,當(dāng)因?yàn)槟J(rèn)參數(shù)未傳遞給函數(shù)時(shí)。 給 None 賦值是非法的并會(huì)引發(fā) SyntaxError。NotImplemented
二進(jìn)制特殊方法應(yīng)返回的特殊值(例如,__eq__()、__lt__()、__add __()、__rsub__() 等)表示操作沒有針對(duì)其他類型實(shí)現(xiàn);為了相同的目的,可以通過(guò)就地二進(jìn)制特殊方法(例如,__imul __()、__ rightnd__()等)返回。 它的邏輯值為真。
注解 當(dāng)二進(jìn)制(或就地)方法返回NotImplemented時(shí),解釋器將嘗試對(duì)另一種類型(或其他一些回滾操作,取決于運(yùn)算符)的反射操作。 如果所有嘗試都返回NotImplemented,則解釋器將引發(fā)適當(dāng)?shù)漠惓!?錯(cuò)誤返回的NotImplemented將導(dǎo)致誤導(dǎo)性錯(cuò)誤消息或返回到Python代碼中的NotImplemented值。
注解 NotImplementedError 和 NotImplemented 不可互換,即使它們有相似的名稱和用途。 有關(guān)何時(shí)使用它的詳細(xì)信息。
Ellipsis
與省略號(hào)文字字面 “…” 相同。 特殊值主要與用戶定義的容器數(shù)據(jù)類型的擴(kuò)展切片語(yǔ)法結(jié)合使用。
__debug__
如果 Python 沒有以 -O 選項(xiàng)啟動(dòng),則此常量為真值。 另請(qǐng)參見 assert 語(yǔ)句。
注解 變量名 None,False,True 和 __ debug__無(wú)法重新賦值(賦值給它們,即使是屬性名,將引發(fā) SyntaxError ),所以它們可以被認(rèn)為是“真正的”常數(shù)。
由 site 模塊添加的常量
 site 模塊(在啟動(dòng)期間自動(dòng)導(dǎo)入,除非給出 -S 命令行選項(xiàng))將幾個(gè)常量添加到內(nèi)置命名空間。 它們對(duì)交互式解釋器 shell 很有用,并且不應(yīng)在程序中使用。
當(dāng)打印此對(duì)象時(shí),會(huì)打印出一條消息,例如“Use quit() or Ctrl-D (i.e. EOF) to exit”,當(dāng)調(diào)用此對(duì)象時(shí),將使用指定的退出代碼來(lái)引發(fā) SystemExit。
copyright credits打印或調(diào)用的對(duì)象分別打印版權(quán)或作者的文本。
license
當(dāng)打印此對(duì)象時(shí),會(huì)打印出一條消息“Type license() to see the full license text”,當(dāng)調(diào)用此對(duì)象時(shí),將以分頁(yè)形式顯示完整的許可證文本(每次顯示一屏)。
三、用模塊和類實(shí)現(xiàn)真正的常量
const.py
''' 遇到問(wèn)題沒人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! ''' class _const:class ConstError(TypeError) : passdef __setattr__(self, key, value):# self.__dict__if key in self.__dict__:data="Can't rebind const (%s)" % keyraise self.ConstError(data)self.__dict__[key] = valueimport syssys.modules[__name__] = _const()test.py
import const const.c=1 print(const.c) # 1 const.c=2 #const.ConstError: Can't rebind const (c)sys.modules[key] =value : 返回系統(tǒng)導(dǎo)入的模塊字段,key是模塊名,value是模塊
Python中所有加載到 內(nèi)存的模塊都放在sys.modules。sys.modules是一個(gè)全局字典,字典sys.modules對(duì)于加載模塊起到了緩沖的作用,當(dāng)import一個(gè)模塊時(shí)首先會(huì)在這個(gè)列表中查找是否已經(jīng)加載了此模塊,如果加載了則只是將模塊的名字加入到正在調(diào)用import的模塊的Local名字空間中。當(dāng)?shù)诙卧賹?dǎo)入該模塊時(shí),python會(huì)直接到字典中查找,從而加快了程序運(yùn)行的速度。件,模塊文件可以是py、pyc、pyd,找到后將模塊載入內(nèi)存,并加入到sys.modules中,并將名稱導(dǎo)入到當(dāng)前的Local名字空間。
總結(jié)
以上是生活随笔為你收集整理的python基础教程:常量 (最全常量解析)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
                            
                        - 上一篇: Python中标准模块importlib
 - 下一篇: Python 基础中20 个小技巧