函數:可重複使用的代碼塊 簡單的來說:就是將我們常用的語句起了一個名字 每次調用名字就可以執行這些語句;
函數定義:
使用關鍵字 def語句 創建函數
def sayHello(): print("Hello World!");
調用定義的函數直接使用函數名即可
sayHello();
輸出結果:
Hello World!
如果函數有多個返回值如:
def remainder(a,b): #a,b 叫做形參 q = a//b #取商 r = a-q*b return (q,r); res ,res2 = remainder(24,6); #傳遞進函數的叫做實參 print(res,res2);
輸出結果:
4 0
函數參數可以提供默認值 可以使用一下的方法:
def setData(name,age = '18'): print(name+"你好,您已滿"+age+"可以註冊這個遊戲!"); setData("呼延灼");
輸出結果:
呼延灼你好,您已滿18可以註冊這個遊戲!
還有一種方法 可以不考慮參數順序:
setData(age= 22,name = '春瑞')
輸出結果:
春瑞你好,您已滿22可以註冊這個遊戲!
在函數中創建變量,作用域都是局部的 如果要在函數內部修改全局變量則可使用global語句
count = 10; def num(): global count; if(count<=10): count += 1; print(count); num() print(count);
輸出結果:
11
11
如何在函數中打印文檔使用系統特殊屬性__doc__:
def myData(name): '這是一個關於提取我個人信息的方法'; print('我叫'+name); myData('史進'); print(myData.__doc__);
輸出結果
我叫史進
這是一個關於提取我個人信息的方法
蒐集參數 :參數前加* 表示蒐集其餘的位置參數 如果不提供任何蒐集的元素 蒐集參數爲空元組
def Demo(*param): print("參數長度是:",len(param),"參數中稱號是:", param[1]); Demo(1,'及時雨','宋江','天魅星');
輸出結果:
參數長度是: 4 參數中稱號是: 及時雨
使用搜集參數時 如果有額外的參數需要傳遞,則使用一下方法:
def Demo(*param,book): print("參數長度是:",len(param),"參數中稱號是:", param[1],'人物來源於',book); Demo(1,'及時雨','宋江','天魅星',book="水滸傳");
輸出結果:
參數長度是: 4 參數中稱號是: 及時雨 人物來源於 水滸傳
內嵌函數的使用 (函數嵌套):
def fun1(): print("fun1()正在被調用..."); def fun2(): print("fun2() 正在被調用..."); fun2(); fun1();
輸出結果:
fun1()正在被調用...
fun2() 正在被調用...
閉包:由函數嵌套形成,是在一個函數的代碼塊中(局部變量)中定義的 通過return方法返回內部函數的名稱從而形成閉包
def funX(): print('funX()正在被調用...'); def funY(): print('funY()正在被調用...'); return funY; funZ = funX(); funZ();
輸出結果:
funX()正在被調用...
funY()正在被調用...
python中使用閉包如果需要傳值的情況下:
def fun1(x): def fun2(y): print(x*y); return fun2; f = fun1(4); f(6);
輸出結果:
24
python閉包中如果需要對非全局局部變量進行賦值 需要使用nonlocal關鍵字
def fun1(): x = 5; def fun2(): nonlocal x; x *=x; print(x); return fun2; f = fun1(); f();
輸出結果:
25
總結:
1,定義函數:def funname();
2,函數調用 如果有多個返回值 則可通過元組的形式接收
3,函數實參和形參的區別
4,函數的不同調用方式:不考慮參數順序調用
5,系統特殊屬性 打印函數中的字符串信息:myData.__doc__
6,蒐集參數:*param 蒐集多個參數 注意:如果有額外的值需要帶有參數名
7,內置函數(內嵌函數)的使用:兩個函數相互嵌套形成
8,閉包函數的使用:定義在函數代碼塊中的函數,通過返回函數的名稱進行調用 關鍵字return
9, 在局部作用域改變全局變量的值:global關鍵字 在內嵌函數或者閉包中改變非全局局部變量的值:nonlocal關鍵字