python基础教程:常量 (最全常量解析)
一、常量
變量是變化的量,常量則是不變的量。python中沒有使用語法強制定義常量,也就是說,python中定義常量本質上就是變量。如果非要定義常量,變量名必須全大寫。
AGE_OF_NICK = 19 print(AGE_OF_NICK) 19 AGE_OF_NICK = AGE_OF_NICK + 1 print(AGE_OF_NICK) 20如果是常量,那就沒必要更改,所以python就只制定了一個規范,而沒指定常量的語法,因此常量也是可以修改的,但不建議。
在c語言中有專門的常量定義語法,const int age = 19;,一旦定義age為常量,更改age即會報錯 。
二、內置常量
內置常量
有少數的常量存在于內置命名空間中。 它們是:
False bool 類型的假值。 給 False 賦值是非法的并會引發 SyntaxError。True bool 類型的真值。 給 True 賦值是非法的并會引發 SyntaxError。None NoneType 類型的唯一值。 None 經常用于表示缺少值,當因為默認參數未傳遞給函數時。 給 None 賦值是非法的并會引發 SyntaxError。NotImplemented
二進制特殊方法應返回的特殊值(例如,__eq__()、__lt__()、__add __()、__rsub__() 等)表示操作沒有針對其他類型實現;為了相同的目的,可以通過就地二進制特殊方法(例如,__imul __()、__ rightnd__()等)返回。 它的邏輯值為真。
注解 當二進制(或就地)方法返回NotImplemented時,解釋器將嘗試對另一種類型(或其他一些回滾操作,取決于運算符)的反射操作。 如果所有嘗試都返回NotImplemented,則解釋器將引發適當的異常。 錯誤返回的NotImplemented將導致誤導性錯誤消息或返回到Python代碼中的NotImplemented值。
注解 NotImplementedError 和 NotImplemented 不可互換,即使它們有相似的名稱和用途。 有關何時使用它的詳細信息。
Ellipsis
與省略號文字字面 “…” 相同。 特殊值主要與用戶定義的容器數據類型的擴展切片語法結合使用。
__debug__
如果 Python 沒有以 -O 選項啟動,則此常量為真值。 另請參見 assert 語句。
注解 變量名 None,False,True 和 __ debug__無法重新賦值(賦值給它們,即使是屬性名,將引發 SyntaxError ),所以它們可以被認為是“真正的”常數。
由 site 模塊添加的常量
site 模塊(在啟動期間自動導入,除非給出 -S 命令行選項)將幾個常量添加到內置命名空間。 它們對交互式解釋器 shell 很有用,并且不應在程序中使用。
當打印此對象時,會打印出一條消息,例如“Use quit() or Ctrl-D (i.e. EOF) to exit”,當調用此對象時,將使用指定的退出代碼來引發 SystemExit。
copyright credits打印或調用的對象分別打印版權或作者的文本。
license
當打印此對象時,會打印出一條消息“Type license() to see the full license text”,當調用此對象時,將以分頁形式顯示完整的許可證文本(每次顯示一屏)。
三、用模塊和類實現真正的常量
const.py
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和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 : 返回系統導入的模塊字段,key是模塊名,value是模塊
Python中所有加載到 內存的模塊都放在sys.modules。sys.modules是一個全局字典,字典sys.modules對于加載模塊起到了緩沖的作用,當import一個模塊時首先會在這個列表中查找是否已經加載了此模塊,如果加載了則只是將模塊的名字加入到正在調用import的模塊的Local名字空間中。當第二次再導入該模塊時,python會直接到字典中查找,從而加快了程序運行的速度。件,模塊文件可以是py、pyc、pyd,找到后將模塊載入內存,并加入到sys.modules中,并將名稱導入到當前的Local名字空間。
總結
以上是生活随笔為你收集整理的python基础教程:常量 (最全常量解析)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python中标准模块importlib
- 下一篇: websocket python爬虫_p