1. 程式人生 > >python匿名函式以及內建函式的使用

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', '