Python3的內置常量
在Python解釋器中,有少量的常量存在于內置命名空間中
所謂常量就是指不變化的量,雖然在python中的常量有可以被重新賦值的常量,但是強烈建議不要對其重新賦值,否則會影響python解釋器正確執行python程式
注意:這里順便提醒大家不管你是為了Python就業還是興趣愛好,記住:專案開發經驗永遠是核心,如果你缺新專案練習或者沒有python精講教程,可以去小編的Python交流.裙 :七衣衣九七七巴而五(數字的諧音)轉換下可以找到了,里面很多新教程專案,還可以跟老司機交流討教!
False:
- bool型別的假值
- 不可賦值
True
- bool型別的真值,給True或False賦值是非法的,會引發SyntaxError
- 不可賦值
None
NoneType型別的唯一值.None經常用于表示缺少值,當因為默認引數未傳遞給函式時.給None賦值也是非法的,后引發SyntaxError- 不可賦值
NotImplemented
- 二進制特殊方法應回傳特殊值(例如,
__eq__(),__lt__(),__add__(),__rsub__()等)表示操作沒有針對其他型別實作,為了相同的目的可以通過就地二進制特殊方法(例如__imul__(),__rightnd__()等)回傳,它的邏輯為真. - 對其賦值不會拋錯,但是不應該對其賦值,會影響解釋器對程式正常的執行
注解:當二進制(或就地)方法回傳
NotImplemented時,解釋器將常識對另一種型別(或其他一些回滾操作,取決于運算子)的反射操作, 如果所有嘗試都回傳NotImplemented,則解釋器將引發適當的例外, 錯誤回傳的NotImplemented將導致誤導性錯誤訊息或回傳到Python代碼中的NotImplemented值,
NotImplemented是說明當前代碼沒有實作對呼叫方法的支持,不錯產生錯誤.
它的布林值為真:
>>> bool(NotImplemented)
True
復制代碼
下面用代碼展示這個常量的作用,定義兩個類,實作了__eq__()方法:
class A:
def __init__(self, value):
self.value = https://www.cnblogs.com/chengxuyuanaa/p/value
def __eq__(self, other):
"""
傳進的other是A的實體或者B的實體,都呼叫此方法進行比較,
其他情況回傳NotImplemmented
"""
if isinstance(other, A):
print(f'Comparing an A with another A')
return other.value =https://www.cnblogs.com/chengxuyuanaa/p/= self.value
if isinstance(other, B):
print(f'Comparing an A with a B')
return other.value =https://www.cnblogs.com/chengxuyuanaa/p/= self.value
print('could not compare A with other class')
return NotImplemented
class B:
def __init__(self, value):
self.value = https://www.cnblogs.com/chengxuyuanaa/p/value
def __eq__(self, other):
"""
只有other是B的實體時才呼叫這個方法進行比較,其他情況回傳
NotImplemented
"""
if isinstance(other, B):
print(f'Comparing an B with another B')
return other.value =https://www.cnblogs.com/chengxuyuanaa/p/= self.value
print('could not compare B with other class')
return NotImplemented
復制代碼
在代碼中實體化兩個類,分別進行比較,查看呼叫方法的不同:
>>> a1 = A(1)
>>> b1 = B(1)
>>> a1 == b1
Comparing an A with a B
True
>>> a1 == a1
Comparing an A with another A
True
復制代碼
如上例,運行a1 == b1,首先呼叫a1的__eq__()方法,對前后兩個值a1和b1比較,
同樣a1 == a1呼叫A的__eq__()方法
>>> b1 == b1
Comparing a B with another B
True
復制代碼
呼叫b1的__eq__()方法.
>>> b1 == a1
Could not compare B against the other class
Comparing an A with a B
True
復制代碼
如上面代碼所示,b1和a1進行比較時,會首先呼叫B類中的__eq__()方法,即b1.__eq__(a1),得到控制臺資訊Could not compare B against the other class,回傳NotImpletemented,這個常量告訴解釋器,對應的方法沒有在該類中實作,讓其嘗試呼叫a1的__eq__()方法,得到控制臺資訊Comparing an A with a B,結果為Ture.NorImplemented本身不會打斷程式的運行.
如果兩個物件的__eq__()都不能正確得出結果,解釋器會繼續嘗試呼叫兩個物件的__ne__()方法,知道獲取正常結果或例外.
對比
NotImplementedError,NotImplementedError是一個例外類,表示類的抽象方法或者開發者定義的介面方法,沒有被重寫,而出現的例外,會打斷程式的執行,可以被捕獲.
class C:
def interface(self):
raise NotImplementedError('you have to overwrite this method')
復制代碼
Ellipsis
- 和省略號文字字面"..."相同,特殊值主要與用戶定義的容器資料型別的擴展切片語法結合使用
- 回圈資料結構,一個符合物件包含只想自身的參考
- 對其賦值不會拋錯
該物件的布林值為真
>>> bool(Ellipsis)
True
復制代碼
示例:
>>> def func(): Ellipsis
>>> func()
>>> def func(): ...
>>> func()
# 函式的呼叫結果為空
復制代碼
對自身的參考:
>>> array = [1, 2, 3]
>>> array.append(array)
>>> print(array)
[1, 2, 3, [...]]
復制代碼
在numpy中被用來模擬資料結果:
>>> import numpy as np
>>> l = np.linspace(1, 100, num=10000)
>>> print(l)
array([ 1. , 1.00990099, 1.01980198, ..., 99.98019802,
99.99009901, 100. ])
復制代碼
__debug__
- 是一個bool型別的常量,對其賦值會拋出語法錯誤
>>> __debug__ = False
SyntaxError: assignment to keyword
復制代碼
- 如果Python沒有使用-O選項啟動,此常量是真值,否則是假值,
site 模塊添加的常量
site 模塊(在啟動期間自動匯入,除非給出 -S 命令列選項)將幾個常量添加到內置命名空間, 它們對互動式解釋器 shell 很有用,并且不應在程式中使用,
-
quit(code=None) -
exit(code=None)quit()和exit()表示退出python解釋器當列印此物件時,會列印出一條訊息,例如“Use quit() or Ctrl-D (i.e. EOF) to exit”,當呼叫此物件時,將使用指定的退出代碼來引發
SystemExit, -
copyright -
credits列印或呼叫的物件分別列印著作權或作者的文本,
-
license當列印此物件時,會列印出一條訊息“Type license() to see the full license text”,當呼叫此物件時,將以分頁形式顯示完整的許可證文本(每次顯示一屏),
最后總結 :不管你是為了Python就業還是興趣愛好,記住:專案開發經驗永遠是核心,如果你缺新專案練習或者沒有python精講教程,可以去小編的Python交流.裙 :七衣衣九七七巴而五(數字的諧音)轉換下可以找到了,里面很多新教程專案,還可以跟老司機交流討教!
本文的文字及圖片來源于網路加上自己的想法,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/160519.html
標籤:Python
