1. 程式人生 > >Python標準內建函式(01-05)

Python標準內建函式(01-05)

1.1  函式abs(x)

在Python程式中,函式abs(x)的功能是返回引數“x”的絕對值,引數“x”可以是一個整數或浮點數。如果引數“x”是一個複數,則返回其大小。例如在下面的例項檔案abs.py中,演示了使用函式abs()返回指定數字絕對值的過程。

print ("abs(-40) : ", abs(-40))

print ("abs(100.10) : ", abs(100.10))

執行後會輸出:

abs(-40) :  40

abs(100.10) :  100.1

因為函式abs(x)是一個標準內建函式,所以在程式中不需要匯入import 語句就可以使用。

1.2  函式all(iterable)

在Python程式中,函式all(iterable)的功能是如果可迭代的物件的所有元素全部非空(或者空迭代物件),就返回True。當引數“iterable”的元素都不為false、''、0或者iterable為空時,則all(iterable)的值為True,也就是說只要iterable元素有一個為"假",則為False,"全‘真’為True,有‘假’為False"。

函式all(iterable)主要用於判斷列表、元組、字典等物件是否有空元素,比如有10000個元素的列表,如果沒有提供此函式,需要使用迴圈來實現,那麼計算速度會比較慢。

函式all(iterable)等同於下面程式碼的功能:

def all(iterable):

    for element in iterable:

        if not element:

            return False

    return True

例如在下面的例項檔案kong.py中,演示了使用函式all(iterable)處理列表和元組的過程。

print( all(['a', 'b', 'c', 'd']))    # 列表list,元素都不為空或0

print(all(['a', 'b', '', 'd']))      # 列表list,存在一個為空的元素

print(all([0, 1, 2, 3]))             # 列表list,存在一個為0的元素

print(all(('a', 'b', 'c', 'd')))     # 元組tuple,元素都不為空或0

print(all(('a', 'b', '', 'd')))      # 元組tuple,存在一個為空的元素

print(all((0, 1, 2, 3)))             # 元組tuple,存在一個為0的元素

print(all([]))                       # 空列表

print(all(()))                       # 空元組

執行後會輸出:

True

False

False

True

False

False

True

True

1.3  函式any(iterable)

在Python程式中,函式any(iterable)的功能是如果引數“iterable”中的任何一個元素為True,則返回 True。如果引數“iterable”為空(empty),則返回 False。也就是說,當所有的iterable都為假時any(iterable)為False。引數“iterable”是一個元組或列表。

函式any(iterable)等同於如下所示程式碼的功能。

def any(iterable):

    for element in iterable:

        if element:

            return True

    return False

例如在下面的例項檔案any.py中,演示了使用函式any(iterable)處理列表和元組的過程。

print(any(['a',(2,4),3,True]) )

print(any(['a',(2,4),3,False]))

print(any(['a',(),3,False]) )

print(any(['',(),0,False]) )

print(any(('a',(),3,False)))

print(any(('',(),0,False)) )

print(any(()))

print(any([]))

print(any(''))

執行後會輸出:

True

True

True

False

True

False

False

False

False

注意:函式all(iterable)和any(iterable)的區別

  1. 函式all(iterable):"有‘假’為False,全‘真’為True,iterable為空是True"
  2. 函式any(iterable):"有‘真’為True,全‘假’為False,iterable為空是False"

1.4  函式ascii(object)

在Python程式中,函式ascii(object)的功能是返回一個可列印的物件字串。當遇到非ASCII碼時,就會輸出\x、\u或\U等字元。與Python 2版本里的repr()函式是等效的。例如在下面的例項檔案as.py中,演示了使用函式ascii(object)處理不同引數物件的過程。

print(ascii(1))

print(ascii('&'))

print(ascii(9000000))

print(ascii('中文')) #非ascii字元

執行後會輸出:

1

'&'

9000000

'\u4e2d\u6587'

1.5  函式bin()

在Python程式中,函式bin()的功能是返回一個整數 int 或者長整數 long int 的二進位制表示。使用函式bin()的語法格式如下所示:

bin(x)

引數“x”是一個int型別或者long int型別的數字。返回值將是一個合法的Python表示式。如果 x 不是int 型別的物件,那麼就定義一個__index__()方法返回一個整數。

例如在下面的例項檔案er.py中,演示了使用函式bin()處理整數的過程。

b = bin(3)

print(b)

print(type(b))  #獲取b的型別
class C:

    def __index__(self):

        return 3



c = C()

print(bin(c))

在上述程式碼中,首先將變數b中整形數字轉換成二進位制字串,然後在類C物件中定義了__index__()方法,設定其返回值是整數,並將__index__()方法返回值轉換成二進位制字串。執行後會輸出:

0b11

<class 'str'>

0b11

在Python程式中,如果引數x不是一個整數,則x必須定義一個__index__() 方法,並且方法返回值必須是整數。如果物件不是整數,執行程式後會發生報錯。如果在物件中定義了__index__()方法,但返回值不是整數也會發生報錯。例如在下面的例項檔案er1.py中,演示了使用函式bin()處理非整數發生報錯的過程。

class A:

    pass

a = A()

print(bin(a))

class B:

    def __index__(self):

        return "3"

b = B()

print(bin(b))

執行後會先後輸出:

Traceback (most recent call last):

  File "<pyshell#15>", line 1, in <module>

    bin(a)

TypeError: 'A' object cannot be interpreted as an integer

 

Traceback (most recent call last):

  File "<pyshell#21>", line 1, in <module>

    bin(b)

TypeError: __index__ returned non-int (type str)