函数与匿名函数
| 函數與匿名函數 |
一、函數
在計算機科學中,函數是程序負責完成某項特定任務的代碼單元,具有一定的獨立性。
1.函數的定義
在Python中,函數在定義時需要滿足這樣的規則:
- 使用關鍵字def引導;
- def后面是函數的名稱,括號中是函數的參數,不同的參數用逗號“,”隔開,參數可以為空,但括號不能省略;
- 函數代碼塊要縮進;
- 用一對"""包含的字符串作為函數的說明,用來解釋函數的用途,可省略;
- 使用關鍵字return返回一個特定的值,如果省略,返回None。
例如,我們定義一個簡單的加法函數,它接受兩個變量x和y,計算x與y的的和啊,并返回a的值:
def add(x,y):"""Add two numbers"""a = x + yreturn a2.函數的調用
定義好函數后,函數并不會自動執行。我們需要調用它才能執行相關的內容。
函數的調用使用函數名加括號的形式,參數放在括號中,參數分為形參和實參,定義函數時是形參,調用函數時是實參。
def add(x,y): #形參"""Add two numbers"""a = x + yreturn a add(1,2) #調用方法,實參當傳入的參數數目與實際不符時,會報錯。
當傳入的參數不支持加法時,也會報錯。
傳入參數時,Python提供了兩種模式,第一種是按照參數的順序傳入,另一種是使用鍵-值模式,按照參數名稱傳入參數:
def add(x,y):"""Add two numbers"""a = x + yreturn a add(x=1,y=2) #鍵-值模式,可以調換順序也可以兩種模式一起使用,前提是鍵-值模式一定在參數模式右邊,否則會報錯:
def add(x,y):"""Add two numbers"""a = x + yreturn a add(1,y=2) #add(x=1,2)會報錯3.帶默認參數的函數
我們可以給函數參數設定默認值,默認參數需要在定義設定,定義時,所有帶默認值的參數必須放在不帶默認值的參數后面:
def handle(x,type='None'):print(x,type) handle('hello') #結果為:hello,None handle('hello','mysql') #可覆蓋,結果為:hello,mysql4.參數組
參數組在定義函數時使用一個星號" * "或者兩個星號" ** "來實現。
使用一個星號的參數使用如下:
def test(x,*args): print(x) #結果為:1print(args) #結果為:(2, 3, 4, 5, 6)print(args[0]) #結果為:2 test(1,2,3,4,5,6)參數中的*args是一個可變數目的參數,我們可以把它看成一個元組。
調用test(1,2,3,4,5,6)時,第一個參數1傳給了x,剩余的參數組成一個元組傳給了args,因此,args的值為(2,3,4,5,6)。
使用兩個星號的參數使用如下:
def test(x,**kwargs):print(x) #結果為:1print(kwargs) #結果為:{'y': 2, 'z': 3, 'w': 4} test(1,y=2,z=3,w=4)**kwargs表示這是一個不定名字的參數,它本質上是一個字典。
調用test(1,y=2,z=3,w=4)時,第一個參數1傳給了x,剩余的參數組成一個字典傳給了kwargs,kwargs為字典{'y': 2, 'z': 3, 'w': 4}。
這兩種模式也可以一起使用,前提是一個星號參數在兩個星號參數左邊:
def test(x,*args,**kwargs):print(x) #結果為:1print(args) #結果為:(2, 3, 4)print(kwargs) #結果為:{'y': 2, 'z': 3} test(1,2,3,4,y=2,z=3)二、匿名函數
當我們在傳入函數時,有些時候,不需要過多的定義函數,直接傳入匿名函數更方便。
1.匿名函數格式
匿名函數格式如下:
lambda x:x+1 #相當于 def calc(x)return x+12.匿名函數的調用
匿名函數不能直接調用,必須賦予一個變量:
lambda x:x+1 func = lambda x:x+1 print(func(10)) #結果為:11?
轉載于:https://www.cnblogs.com/lzc69/p/11097998.html
總結
- 上一篇: oracle data guard --
- 下一篇: Bash 脚本 set 命令教程