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)的區別
- 函式all(iterable):"有‘假’為False,全‘真’為True,iterable為空是True";
- 函式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)