Python內置常量


  引言

    Python內置的常量不多,只有6個,分別是True、False、None、NotImplemented、Ellipsis、__debug__。

   

  一. True

   

    1. True是bool類型用來表示真值的常量。

>>> True
True
>>> type(True)
<class 'bool'>

    2. 對常量True進行任何賦值操作都會拋出語法錯誤。

>>> True = 1
SyntaxError: can't assign to keyword

 

  二. False

   

    1. False是bool類型用來表示假值的常量。

>>> False
False
>>> type(False)
<class 'bool'>

    2. 對常量False進行任何賦值操作都會拋出語法錯誤。

>>> False = 0
SyntaxError: can't assign to keyword

 

  三. None

   

    1. None表示無,它是NoneType的唯一值。

>>> None  #表示無,沒有內容輸出
>>> type(None)
<class 'NoneType'>

    2. 對常量None進行任何賦值操作都會拋出語法錯誤。

>>> None = 2
SyntaxError: can't assign to keyword

 

    3. 對於函數,如果沒有return語句,即相當於返回None。

>>> def sayHello():  #定義函數
    print('Hello')

    
>>> sayHello()
Hello
>>> result = sayHello()
Hello
>>> result
>>> type(result)
<class 'NoneType'>

 

  四. NotImplemented

 

    1.  NotImplemented是NotImplementedType類型的常量。

>>> NotImplemented
NotImplemented
>>> type(NotImplemented)
<class 'NotImplementedType'>

    2. 使用bool()函數進行測試可以發現,NotImplemented是一個真值。

>>> bool(NotImplemented)
True

    3. NotImplemented不是一個絕對意義上的常量,因為他可以被賦值卻不會拋出語法錯誤,我們也不應該去對其賦值,否則會影響程序的執行結果。

>>> bool(NotImplemented)
True
>>> NotImplemented = False
>>> 
>>> bool(NotImplemented)
False

    4. NotImplemented多用於一些二元特殊方法(比如__eq__、__lt__等)中做為返回值,表明沒有實現方法,而Python在結果返回NotImplemented時會聰明的交換二個參數進行另外的嘗試。

>>> class A(object):
    def __init__(self,name,value):
        self.name = name
        self.value = value
    def __eq__(self,other):
        print('self:',self.name,self.value)
        print('other:',other.name,other.value)
        return self.value == other.value #判斷2個對象的value值是否相等

>>> a1 = A('Tom',1)
>>> a2 = A('Jay',1)
>>> a1 == a2
self: Tom 1
other: Jay 1
True
>>> class A(object):
    def __init__(self,name,value):
        self.name = name
        self.value = value
    def __eq__(self,other):
        print('self:',self.name,self.value)
        print('other:',other.name,other.value)
        return NotImplemented

>>> a1 = A('Tom',1)
>>> a2 = A('Jay',1)
>>> a1 == a2
self: Tom 1
other: Jay 1
self: Jay 1
other: Tom 1
False

    當執行a1==a2(即調用__eq__(a1,a2)),返回NotImplemented時,Python會自動交換參數再次調用__eq__(a2,a1)。

 

  五. Ellipsis

 

    1. Ellipsis是ellipsis類型的常量,它和…是等價的。

>>> Ellipsis
Ellipsis
>>> type(Ellipsis)
<class 'ellipsis'>
>>> ...
Ellipsis
>>> ... == Ellipsis
True

    2. 使用bool()函數進行測試可以發現,Ellipsis是一個真值。

>>> bool(Ellipsis)
True

    3. Ellipsis不是一個絕對意義上的常量,因為他可以被賦值卻不會拋出語法錯誤,我們也不應該去對其賦值,否則會影響程序的執行結果。

>>> bool(Ellipsis)
True
>>> Ellipsis = False
>>> bool(Ellipsis)
False

    4. Ellipsis多用於表示循環的數據結構。

>>> a = [1,2,3,4]
>>> a.append(a)
>>> a
[1, 2, 3, 4, [...]]
>>> a
[1, 2, 3, 4, [...]]
>>> len(a)
5
>>> a[4]
[1, 2, 3, 4, [...]]
>>>

 

  六. __debug__

 

    1. __debug__是一個bool類型的常量。

>>> __debug__
True
>>> type(__debug__)
<class 'bool'>

    2. 對常量__debug__進行任何賦值操作都會拋出語法錯誤。

>>> __debug__ = False
SyntaxError: assignment to keyword

    3. 如果Python沒有使用-O選項啟動,此常量是真值,否則是假值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM