python匿名函式以及內建函式的使用
一、匿名函式
1.定義:
匿名函式顧名思義就是指:是指一類無需定義識別符號(函式名)的函式或子程式。
2.語法格式:lambda
引數:表示式
lambda語句中,開頭先寫關鍵字lambda,冒號前是引數,可以有多個,用逗號隔開;冒號右邊的為表示式,需要注意的是隻能有一個表示式。由於lambda返回的是函式物件(構建的是一個函式物件),所以需要定義一個變數去接收。
3.注意點:lambda 函式可以接收任意多個引數 (包括可選引數) 並且返回單個表示式的值。lambda 函式不能包含命令,包含的表示式不能超過一個。
4.匿名函式優點:
- 使用Python寫一些指令碼時,使用lambda可以省去定義函式的過程,讓程式碼更加精簡。
- 對於一些抽象的,不會被別的地方再重複使用的函式,有時候函式起個名字也是個難題,使用lambda不需要考慮命名的問題
- 使用lambda在某些時候然後程式碼更容易理解
5.應用:在內建函式 max() 求最大值,min()求最小值, map() 對映, reduce 合併, filter() 過濾 中會用到!
簡單程式碼舉例:
1 salaries={ 2 'egon':3000, 3 'alex':100000000, 4 'wupeiqi':10000, 5 'yuanhao':2000 6 } 7 f = lambda k: salaries[k]8 print(f) 9 print(f('egon'))
執行結果:
<function <lambda> at 0x0000000000413E18>
3000
二、內建函式
內建引數詳解 https://docs.python.org/3/library/functions.html?highlight=built#ascii
1.abs() 取絕對值 資料型別 必須是 整型!
1 print(abs(1)) 2 print(abs(-1)) 3 print(abs('a'))
執行結果:
1 1 Traceback (most recent call last): File"F:/py_fullstack_s4/day25/內建函式.py", line 3, in <module> print(abs('a')) TypeError: bad operand type for abs(): 'str'
2.all(可迭代物件) 返回布林值 只要任何一個值不為真,返回Flase,可迭代物件為空時,返回True
1 print(all('')) 2 print(all((1,'',None,0))) 3 print(all(i for i in range(1,10))) #從1開始取值,排除0
執行結果:
True
False
True
3.any(可迭代物件) 返回布林值 只要任何一個值為真,返回True,可迭代物件為空時,返回Flase
1 print(any('')) 2 print(any([None,1,2,'']))
執行結果:
False
True
4.將十進位制轉換成 :bin() 二進位制 hex() 十六進位制 oct()八進位制
1 print(bin(12)) #二進位制 2 print(hex(12)) #十六進位制 3 print(oct(12)) #八進位制
執行結果:
1 0b1100 2 0xc 3 0o14
5.資料型別:int() 整型;str() 字串;list()列表;tuple()元組;dict()字典;set() 集合;frozenset() 不可變集合
is 判斷身份,身份運算,根據id去判斷身份
1 num =1 2 s = "adxz" 3 l = [1,2.3,4] 4 d = {1:1,"z":2} 5 print(type(d)) 6 print(type(l)) 7 print(type(s)) 8 print(num is 1) 9 10 d = dict(x=1,y=2,z="3") #生成字典的另一種方式 11 print(d) 12 s = {1,2,3,4,4,3,2,5} #集合 13 print(s) 14 s.add((6,7)) 15 print(s) 16 f = frozenset(s) #不可變集合 17 print(f) 18 print(type(f))
執行結果:
1 <class 'dict'> 2 <class 'list'> 3 <class 'str'> 4 True 5 {'x': 1, 'y': 2, 'z': '3'} 6 {1, 2, 3, 4, 5} 7 {1, 2, 3, 4, 5, (6, 7)} 8 frozenset({1, 2, 3, 4, 5, (6, 7)}) 9 <class 'frozenset'>
6.bool() 判斷布林值
1 print(bool(2>1)) 2 print(bool(2<1))
執行結果:
1 True 2 False
7.bytes() bytes 位元組 指定編碼格式否則報錯 type() 檢視變數 是 哪種資料型別
1 s = 'abcdefg' 2 print(s) #檢視字串s 3 print(type(s)) #檢視字串型別 4 s1 = bytes(s,encoding='utf-8') #檢視字串型別 5 print(s1)
執行結果:
1 abcdefg 2 <class 'str'> 3 b'abcdefg'
8.ASCII碼轉換 :chr() ASCII轉換 數字轉換成字元;ord() ASCII轉換 字元轉換成數字
1 print(chr(81)) #根據位置找值 2 print(ord('A')) #根據值找位置
執行結果:
1 Q 2 65
9.callable() 判斷是否為函式,括號內傳入函式名 complex() 定義複數
1 x = complex(1-2j) #定義一個複數 2 print(type(x)) #檢視函式型別 3 print(x.real) #列印x 的實部 4 print(x.imag) #列印x 的虛部 5 print(callable(x)) #檢視是否是函式 6 7 def test(): #定義函式 8 pass 9 print(callable(test)) #檢視是否是函式
執行結果:
1 <class 'complex'> 2 1.0 3 -2.0 4 False 5 True
10.幫助 dir(物件) 檢視物件都能呼叫什麼方法;help()直接檢視 函式 具體的幫助資訊
1 a = 'hnaxhoqihcqew0' 2 print(dir(a)) #檢視呼叫方法 help()直接檢視具體的幫助資訊
執行結果:
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', '