標籤:傳遞 pre 個數 teacher 定長參數 變數範圍 glob 定義函數 none
一.函數的定義
def 函數名(參數列表): 函數體 return語句
return語句不寫或後邊不加任何對象即為return None
二.函數的參數
無參數
def func1(): print("沒有參數")
一個參數
def func1(a): return a
多個參數
def func1(a,b,c): return a+b+c
必須參數
必須按照正確順序和數量傳入參數
def func1(name,age,job): print("name:%s age:%d job:%s"%(name,age,job))func1("sfencs",20,"IT")
關鍵字參數
def func1(name,age,job): print("name:%s age:%d job:%s"%(name,age,job))func1(age=20,name="sfencs",job="IT")
預設參數
預設參數必須放在必須參數的後面
def func1(name,age,job="IT"): print("name:%s age:%d job:%s"%(name,age,job))func1("sfencs",20)func1("Alan",25,"teacher")
不定長參數
參數帶一個星號*
def func1(*args): print(args)func1(1,2,3,"sfencs")#(1, 2, 3, ‘sfencs‘)以元組形式儲存
參數帶兩個星號**
def func1(**args): print(args)func1(age=20,name="sfencs",job="IT")#{‘age‘: 20, ‘name‘: ‘sfencs‘, ‘job‘: ‘IT‘}以字典形式儲存
定義函數的參數時請以必須參數、預設參數、帶一個星號的不定長參數、帶兩個星號的不定長參數的順序定義形參
三.參數傳遞
不可變類型
def func1(a): a=5b=10func1(b)print(b)#輸出為10
可變類型
def func1(list1): list1.append("sfencs")list2=[1,2,3]func1(list2)print(list2)#[1, 2, 3, ‘sfencs‘]list2會改變
四.變數範圍
L (Local) 局部範圍
E (Enclosing) 閉包函數外的函數中
G (Global) 全域範圍
B (Built-in) 內建範圍
按照L-->E-->G-->B的順序尋找
內部範圍修改外部範圍變數
global
count=20def function() : global count#不加這句話會報錯 print (count)#20 count=5 print(count)#5function()print(count)#5
nonlocal
修改嵌套範圍
def function1() : count=20 def function2(): nonlocal count count=5 print(count)#5 function2() print(count)#r此時輸出為5,若不加nonlocal count則輸出為20function1()
五.遞迴函式
#斐波那契數列為0,1,1,2,3,5,8,13,21,34.......def fibon(n): if n<=2 : return n-1 return fibon(n-1)+fibon(n-2)print(fibon(7))#輸出數列中第七個數,為8
python基礎學習11----函數