Python基礎十四——內置函數和匿名函數

內置函數:html

截止到 python 版本3.6.2,如今 python 一共提供了 68 個內置函數。python

    Built-in Functions    
abs() dict() help() min() setattr()
all() dir() hex() next() slice()
any() divmod() id() object() sorted()
ascii() enumerate() input() oct() staticmethod()
bin() eval() int() open() str()
bool() exec() isinstance() ord() sum()
bytearray() filter() issubclass() pow() super()
bytes() float() iter() print() tuple()
callable() format() len() property() type()
chr() frozenset() list() range() vars()
classmethod() getattr() locals() repr() zip()
compile() globals() map() reversed() __import__()
complex() hasattr() max() round()  
delattr() hash() memoryview() set()  

1. abs()  獲取絕對值web

複製代碼
1 >>> abs(-10) 2 10 3 >>> abs(10) 4 10 5 >>> abs(0) 6 0 7 >>> a = -10 8 >>> a.__abs__() 9 10
複製代碼

2. all()  接受一個迭代器,若是迭代器的全部元素都爲真,那麼返回True,不然返回Falseshell

複製代碼
1 >>> tmp_1 = ['python',123] 2 >>> all(tmp_1) 3 True 4 >>> tmp_2 = [] 5 >>> all(tmp_2) 6 True 7 >>> tmp_3 = [0] 8 >>> all(tmp_3) 9 False
複製代碼

3. any()  接受一個迭代器,若是迭代器裏有一個元素爲真,那麼返回True,不然返回False數據結構

4. ascii()  調用對象的__repr__()方法,得到該方法的返回值.app

5. bin(), 6. oct(),  7. hex()    三個函數功能爲:將十進制數分別轉換爲2/8/16進制。less

8. bool()  測試一個對象是True仍是False.ssh

9. bytes()  將一個字符串轉換成字節類型函數

複製代碼
1 >>> s = 'python' 2 >>> x = bytes(s, encoding='utf-8') 3 >>> x 4 b'python' 5 >>> a = '' 6 >>> s = bytes(a, encoding='utf-8') 7 >>> s 8 b'\xe7\x8e\x8b'
複製代碼

10. str()  將字符類型/數值類型等轉換爲字符串類型測試

1 >>> str(b'\xe7\x8e\x8b', encoding='utf-8') # 字節轉換爲字符串 2 '' 3 >>> str(1) # 整數轉換爲字符串 4 '1'

11. challable()  判斷對象是否能夠被調用,能被調用的對象就是一個callables對象,好比函數和帶有__call__()的實例

複製代碼
1 >>> callable(max) 2 True 3 >>> callable([1, 2, 3]) 4 False 5 >>> callable(None) 6 False 7 >>> callable('str') 8 False
複製代碼

12. char(),13. ord()  查看十進制數對應的ASCII字符/查看某個ASCII對應的十進制數

複製代碼
 1 >>> chr(-1)  2 Traceback (most recent call last):  3 File "<pyshell#26>", line 1, in <module>  4 chr(-1)  5 ValueError: chr() arg not in range(0x110000)  6 >>> chr(0)  7 '\x00'  8 >>> ord('\x00')  9 0 10 >>> ord('7') 11 55
複製代碼

14. classmethod()  用來指定一個方法爲類的方法,由類直接調用執行,只有一個cls參數,執行雷的方法時,自動將調用該方法的類賦值給cls.沒有此參數指定的類的方法爲實例方法

複製代碼
 1 class Province:  2 country = "中國"  3  4 def __init__(self, name):  5 self.name = name  6  7  @classmethod  8 def show(cls): # 類方法,由類調用,最少要有一個參數cls,調用的時候這個參數不用傳值,自動將類名賦值給cls  9 print(cls) 10 11 # 調用方法 12 Province.show()
複製代碼

15. complie()  將字符串編譯成python能識別或能夠執行的代碼,也能夠將文字讀成字符串再編譯

1 compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1) 2 將source編譯爲代碼或者AST對象。代碼對象能過經過exec語句來執行或者eval()進行求值。 3 參數source:字符串或者AST(abstract syntax trees)對象。 4 參數filename:代碼文件名稱,若是不是從文件讀取代碼則傳遞一些可辨認的值。 5 參數model:指定編譯代碼的種類。能夠指定'exec', 'eval', 'single'6 參數flag和dont_inherit:這兩個參數爲可選參數。
1 >>> s  = "print('helloworld')" 2 >>> r = compile(s, "<string>", "exec") 3 >>> r 4 <code object <module> at 0x000001C648038390, file "<string>", line 1>

16. complex()

1 建立一個值爲real + imag * j的複數或者轉化一個字符串或數爲複數。若是第一個參數是字符串,則不須要指定第二個參數。 2 參數real:int,long,float或字符串。 3 參數imag:int,long,float。

17. delattr()  刪除對象的屬性

18. dict()  建立數據字典

複製代碼
1 >>> a = dict() 空字典 2 >>> a 3 {} 4 >>> b = dict(one = 1, two =2) 5 >>> b 6 {'one': 1, 'two': 2} 7 >>> c = dict({'one':1 ,'two':2}) 8 >>> c 9 {'one': 1, 'two': 2}
複製代碼

19. dir()  不帶參數時返回當前範圍內的變量,方法和定義的類型列表,帶參數時返回參數的屬性,方法列表

複製代碼
1 >>> dir() 2 ['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'li', 'li1', 'li2', 'li_1'] 3 >>> dir(list) 4 ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
複製代碼

20. divmod()  分別取商和餘數

1 >>> divmod(20,6) 2 (3, 2)

21. enumerate()  返回一個能夠枚舉的對象,該對象的next()方法將返回一個元組

複製代碼
1 >>> test = ['a', 'b', 'c'] 2 >>> for k,v in enumerate(test): 3 print(k,v) 4 5 # 輸出結果: 6 0 a 7 1 b 8 2 c
複製代碼

22. eval()  將字符串str當成有效的表達式來求值並返回計算結果

1 >>> s = "1+2*3" 2 >>> type(s) 3 <class 'str'> 4 >>> eval(s) 5 7

23. exec()  執行字符串或complie方法編譯過的字符串,沒有返回值

24. filter()  過濾器,構造一個序列,等價於[ item for item in iterables if function(item)],在函數中設定過濾條件,逐一循環迭代器中的元素,將返回值爲True時的元素留下,造成一個filter類型數據

複製代碼
1 filter(function, iterable) 2 參數function:返回值爲True或False的函數,能夠爲None。 3 參數iterable:序列或可迭代對象。 4 >>> def bigerthan5(x): 5 ... return x > 5 6 >>> filter(bigerthan5, [3, 4, 5, 6, 7, 8]) 7 [6, 7, 8]
複製代碼

25. float()  講一個字符串或整數轉換爲浮點數

複製代碼
 1 >>> float()  2 0.0  3 >>> float('123')  4 123.0  5 >>> float(1)  6 1.0  7 >>> float('a')  8 Traceback (most recent call last):  9 File "<pyshell#45>", line 1, in <module> 10 float('a') 11 ValueError: could not convert string to float: 'a'
複製代碼

26. format()  格式化輸出字符串,format(value, format_spec)實質上是調用了value的__format__(format_spec)方法

1 >>> "I am {0}, I like {1}!".format("wang", "moon") 2 'I am wang, I like moon!'

27. frozenset()  建立一個不可修改的集合

1 frozenset([iterable]) 2 set和frozenset最本質的區別是前者是可變的,後者是不可變的。當集合對象會被改變時(例如刪除,添加元素),只能使用set, 3 通常來講使用fronzet的地方均可以使用set。 4 參數iterable:可迭代對象。

28. getattr()  獲取對象的屬性

複製代碼
 1 getattr(object, name [, defalut])  2 獲取對象object名爲name的特性,若是object不包含名爲name的特性,將會拋出AttributeError異常;若是不包含名爲name的特性  3 且提供default參數,將返回default。  4 參數object:對象  5 參數name:對象的特性名  6 參數default:缺省返回值  7 >>> append = getattr(list, 'append')  8 >>> append  9 <method 'append' of 'list' objects> 10 >>> mylist = [3, 4, 5] 11 >>> append(mylist, 6) 12 >>> mylist 13 [3, 4, 5, 6] 14 >>> method = getattr(list, 'add') 15 Traceback (most recent call last): 16 File "<stdin>", line 1, in <module> 17 AttributeError: type object 'list' has no attribute 'add' 18 >>> method = getattr(list, 'add', 'NoMethod') 19 >>> method 20 'NoMethod'
複製代碼

29. globals()  返回一個描述當前全局變量的字典

1 >>> a = 1
2 >>> globals() 3 {'__loader__': <class '_frozen_importlib.BuiltinImporter'>, 'a': 1, '__builtins__': <module 'builtins' (built-in)>, '__doc__': None, '__name__': '__main__', '__package__': None, '__spec__': None}

30. hasattr()

複製代碼
1 hasattr(object,name) 2 判斷對象object是否包含名爲name的特性(hasattr是經過調用getattr(object,name))是否拋出異常來實現的。 3 參數object:對象 4 參數name:特性名稱 5 >>> hasattr(list, 'append') 6 True 7 >>> hasattr(list, 'add') 8 False
複製代碼

31. hash()  哈希值

1 hash(object) 2 若是對象object爲哈希表類型,返回對象object的哈希值。哈希值爲整數,在字典查找中,哈希值用於快遞比價字典的鍵。 3 兩個數值若是相等,則哈希值也相等。

32. help()  返回對象的幫助文檔

33. id()  返回對象的內存地址

1 >>> a = 1
2 >>> id(a) 3 1588522800

34. input()  獲取用戶輸入內容

1 num = input("請輸入一個數字:") 2 # 用戶輸入3 3 print(num) 4 # 輸出結果 5 3

35. int()  將一個字符串或數值轉換爲一個普通整數

複製代碼
1 int([x[,radix]]) 2 若是參數是字符串,那麼它可能包含符號和小數點。參數radix表示轉換的基數(默認是10進制)。 3 它能夠是[2,36]範圍內的值,或者0。若是是0,系統將根據字符串內容來解析。 4 若是提供了參數radix,但參數x並非一個字符串,將拋出TypeError異常; 5 不然,參數x必須是數值(普通整數,長整數,浮點數)。經過捨去小數點來轉換浮點數。 6 若是超出了普通整數的表示範圍,一個長整數被返回。 7 若是沒有提供參數,函數返回0。
複製代碼

36. isinstance()  檢查對象是不是類的對象,返回True或False

1 isinstance(obj, cls) 2 檢查obj是不是類cls的對象, 返回True 或 False 3 class Foo(object): 4 pass 5 obj = Foo() 6 isinstance(obj, Foo)

37. issubclass()  檢查一個類是不是另外一個類的子類。返回True或False

複製代碼
 1 issubclass(sub, super)  2 檢查sub類是不是super類的派生類(子類)。返回True 或 False  3  4 class Foo(object):  5 pass  6  7 class Bar(Foo):  8 pass  9 10 issubclass(Bar, Foo)
複製代碼

38. iter()

1 iter(o[, sentinel]) 2 返回一個iterator對象。該函數對於第一個參數的解析依賴於第二個參數。 3 若是沒有提供第二個參數,參數o必須是一個集合對象,支持遍歷功能(__iter__()方法)或支持序列功能(__getitem__()方法), 4 參數爲整數,從零開始。若是不支持這兩種功能,將處罰TypeError異常。 5 若是提供了第二個參數,參數o必須是一個可調用對象。在這種狀況下建立一個iterator對象,每次調用iterator的next()方法來無 6 參數的調用o,若是返回值等於參數sentinel,觸發StopIteration異常,不然將返回該值。

39. len()  返回對象長度,參數能夠是序列類型(字符串,元組或列表)或映射類型(如字典)

40. list()  列表構造函數

1 list([iterable]) 2 list的構造函數。參數iterable是可選的,它能夠是序列,支持編譯的容器對象,或iterator對象。 3 該函數建立一個元素值,順序與參數iterable一致的列表。若是參數iterable是一個列表,將建立 4 列表的一個拷貝並返回,就像語句iterables[:]。 

41. locals()  打印當前可用的局部變量的字典

1 不要修改locals()返回的字典中的內容;改變可能不會影響解析器對局部變量的使用。 2 在函數體內調用locals(),返回的是自由變量。修改自由變量不會影響解析器對變量的使用。 3 不能在類區域內返回自由變量。

42. map()

複製代碼
 1 map(function, iterable,...)  2 對於參數iterable中的每一個元素都應用fuction函數,並將結果做爲列表返回。  3 若是有多個iterable參數,那麼fuction函數必須接收多個參數,這些iterable中相同索引處的元素將並行的做爲function函數的參數。  4 若是一個iterable中元素的個數比其餘少,那麼將用None來擴展改iterable使元素個數一致。  5 若是有多個iterable且function爲None,map()將返回由元組組成的列表,每一個元組包含全部iterable中對應索引處值。  6 參數iterable必須是一個序列或任何可遍歷對象,函數返回的每每是一個列表(list)。  7  8 li = [1,2,3]  9 data = map(lambda x :x*100,li) 10 print(type(data)) 11 data = list(data) 12 print(data) 13 14 運行結果: 15 16 <class 'map'> 17 [100, 200, 300]
複製代碼

43. max()  返回給定元素裏最大值

1 max(iterable [,args...][, key]) 2 若是隻提供iterable參數,函數返回可遍歷對象(如:字符串,元組或列表)中最大的非空元素。 3 若是提供多個參數,那麼返回值最大的那個參數。 4 可選參數key是單參數的排序函數。 5 若是提供key參數,必須是以命名的形式,如:max(a, b, c, key = fun)

44. meoryview()

45. min()  返回給定元素裏最小值

1 min(iterable [,args...][, key]) 2 若是隻提供iterable參數,函數返回可遍歷對象(如:字符串,元組或列表)中最小的非空元素。 3 若是提供多個參數,那麼返回值最小的那個參數。 4 可選參數key是單參數的排序函數。 5 若是提供key參數,必須是以命名的形式,如:max(a, b, c, key = fun)

46. next()  返回一個可迭代數據結構(如列表)中的下一項

47. object()

1 獲取一個新的,無特性(geatureless)對象。Object是全部類的基類。它提供的方法將在全部的類型實例中共享。 2 該函數時2.2.版本新增,2.3版本以後,該函數不接受任何參數。

48. open()  打開文件

複製代碼
 1 open(filename [, mode [, bufsize]])  2 打開一個文件,返回一個file對象。 若是文件沒法打開,將處罰IOError異常。  3 應該使用open()來代替直接使用file類型的構造函數打開文件。  4 參數filename表示將要被打開的文件的路徑字符串;  5 參數mode表示打開的模式,最經常使用的模式有:'r'表示讀文本,'w'表示寫文本文件,'a'表示在文件中追加。  6 Mode的默認值是'r' 7 當操做的是二進制文件時,只要在模式值上添加'b'。這樣提升了程序的可移植性。  8 可選參數bufsize定義了文件緩衝區的大小。0表示不緩衝;1表示行緩衝;任何其餘正數表示使用該大小的緩衝區;  9 負數表示使用系統默認緩衝區大小,對於tty設備它每每是行緩衝,而對於其餘文件每每徹底緩衝。若是參數值被省卻。 10 使用系統默認值。
複製代碼

49. pow()  冪函數

1 r = pow(2, 10)  # 2的10次方 2 print(r) 3 4 # 輸出 5 1024

50. print()  輸出函數

1 python2中的print語句被python3中的print()函數取代。 2 如何限制print的默認換行: 3 1. python2版本下,在print輸出的最後加一個逗號',' 4 2. python3.4之後,print(value, ...,sep='',end='\n',file=sys.stdout,flush=False),將end設爲空便可。

51. property()

52. range()  根據須要生成一個指定範圍的數字,能夠提供你須要的控制來迭代指定的次數

複製代碼
1 用於建立包含連續算術值的列表(list)。經常使用於for循環。參數必須是普通整數。 2 參數step默認值爲1,參數start的默認值爲0。 3 全參數調用該函數將返回一個普通整數列表。 4 step 能夠是正整數或者負整數。不能夠爲0,不然將處罰ValueError異常。 5 range(3)表明0,1,2.等價於range(0,3) 6 >>> range(0,10,2) #第一個參數是起始數,第二個是終止數(不包含這個),第三個數步數 7 >>>[0,2,4,6,8]
複製代碼

53. repr()  將任意值轉換爲字符串,供計時器讀取的形式

1 repr(object) 2 返回一個對象的字符串表示。有時可使用這個函數來訪問操做。 3 對於許多類型來講,repr()嘗試返回一個字符串,eval()方法可使用該字符串產生對象; 4 不然用尖括號括起來的,包含類名稱和其餘二外信息的字符串被返回。

54. reversed()   反轉,逆序對象

1 reversed(seq) 2 返回一個逆序的iterator對象。參數seq必須是一個包含__reversed__()方法的對象或支持序列操做(__len__()和__getitem__()) 3 該函數是2.4中新增的

55. round()  四捨五入

複製代碼
1 round(x [, n]) 2 對參數x的第n+1位小數進行四捨五入,返回一個小數位數爲n的浮點數。 3 參數n的默認值是0。結果是一個浮點數。如round(0.5)結果爲1.0 4 >>> round(4,6) 5 4 6 >>> round(5,6) 7 5
複製代碼

56. set()

57. setattr()  與getattr()相對應

58. slice()  切片功能

59. sorted()  排序

複製代碼
 1 >>> sorted([36,6,-12,9,-22]) 列表排序  2 [-22, -12, 6, 9, 36]  3 >>> sorted([36,6,-12,9,-22],key=abs) 高階函數,以絕對值大小排序  4 [6, 9, -12, -22, 36]  5 >>> sorted(['bob', 'about', 'Zoo', 'Credit']) 字符串排序,按照ASCII的大小排序  6 ['Credit', 'Zoo', 'about', 'bob']  7 若是須要排序的是一個元組,則須要使用參數key,也就是關鍵字。  8 >>> a = [('b',2), ('a',1), ('c',0)]  9 >>> list(sorted(a,key=lambda x:x[1])) 按照元組第二個元素排序 10 [('c', 0), ('a', 1), ('b', 2)] 11 >>> list(sorted(a,key=lambda x:x[0])) 按照元組第一個元素排序 12 [('a', 1), ('b', 2), ('c', 0)] 13 >>> sorted(['bob', 'about', 'Zoo', 'Credit'],key=str.lower) 忽略大小寫排序 14 ['about', 'bob', 'Credit', 'Zoo'] 15 >>> sorted(['bob', 'about', 'Zoo', 'Credit'],key=str.lower,reverse=True) 反向排序 16 ['Zoo', 'Credit', 'bob', 'about']
複製代碼

60. staticmethod()

61. str()  字符串構造函數

62. sum()  求和

63. super()  調用父類的方法

64. tuple()  元組構造函數

65. type()  顯示對象所屬的類型

66. vars()  

67. zip()  將對象逐一配對

複製代碼
1 list_1 = [1,2,3] 2 list_2 = ['a','b','c'] 3 s = zip(list_1,list_2) 4 print(list(s)) 5 6 運行結果: 7 8 [(1, 'a'), (2, 'b'), (3, 'c')]
複製代碼
複製代碼
1 a = [(1,),(2,),(3,)] 2 r = zip(*a) 3 print(list(r)) 4 運行結果: 5 [(1, 2, 3)] 6 print(list(r)[0]) 7 運行結果: 8 (1, 2, 3)
複製代碼

 

68. __import__()

 

exec 與 eval

  eval 有返回值

  exec 沒有返回值

  exec 和 eval 均可以執行字符串類型的代碼

  eval 有返回值,有結果的簡單計算

  exec沒有返回值,簡單流程控制

  eval 只能用在你明確知道你要執行的代碼是什麼

exec('print(123)')
eval('print(123)')
print(eval('1+2+3+4'))
print(exec('1+2+3+4'))

123
123
10
None
code = '''for i in range(10):
    print(i*'*')
'''
exec(code)

*
**
***
****
*****
******
*******
********
*********
code1 = 'for i in range(0,10): print (i)'
compile1 = compile(code1, '', 'exec')
exec(compile1)

0
1
2
3
4
5
6
7
8
9
code2 = '1 + 2 + 3 + 4'
compile2 = compile(code2, '', 'eval')
print(eval(compile2))

10

複數—— complex

實數: 有理數

    無理數

虛數:虛無縹緲的數

5 + 12j      複合的數     複數

相關文章
相關標籤/搜索