Python-函數傳參


函數定義和調用

def語句定義函數

def 函數名(參數列表):

  函數體(代碼塊)

  【return 返回值】

python的函數沒有return語句,會隱式返回一個None值。

定義中的參數列表成為形式參數,只是一種符號表達,簡稱形參

 

函數的調用

調用方式,函數名加上小括號,括號內寫上實參。

調用時寫的參數是實際參數,簡稱實參

 

函數參數

參數調用時傳入的參數要和定義的參數個數相匹配。

  • 位置參數

def(x,y,z)  調用使用f(1,2,4)

-----按照參數定義順序傳入實參

  • 關鍵字參數

def(x,y,z) 調用使用f(x=1,y=2,z=3) 或者f(z=3,x=1,y=2)

----使用形參的名字來寫入實參的方式,如果使用了形參名字,那么傳參順序就可以和定義順序不同

傳參要求位置參數必須在關鍵字參數之前傳入,位置參數是按位置對應的。

 

函數參數默認值

定義時,在形參后跟一個值。

def add(x=4,y=5):

  return x+y

 

def add(x=4,y):  #沒有缺省值的需要放前面。

  return x+y

 

可變參數

一個形參可以匹配任意個數。

位置參數的可變參數

def add(*nums):
    sum=0
    print(type(nums))
    for x in nums:
        sum=sum+x
    return sum
print(add(3,6,9))

 

<class 'tuple'>
18

在形參前使用*表示該形參是可變參數,可以接收多個實參。

收集多個實參為一個tuple.

關鍵字參數的可變參數

1 def showconfig(**kwargs):
2     for k,v in kwargs.items():
3         print("{}={}".format(k,v))
4 print(showconfig(x=2,y=3))

x=2
y=3

形參前使用**符號,表示可以接收多個關鍵字參數。

收集的實參名稱和值組成1個字典。

可變參數的混合使用

 

總結

有位置可變參數和關鍵字可變參數;

位置可變參數在形參前使用*,關鍵字可變參數在形參前使用**;

位置可變參數和關鍵字可變參數都可以收集若干個實參,位置可變參數收集形成1個tuple,關鍵字可變參數收集形成1個dict;

混合使用參數的時候,可變參數要放到參數列表的最后。普通參數需要放到參數列表前面,位置可變餐宿要放到關鍵字可變參數之前。

 

keyword-only參數(python3加入)

如果在一個*后,或者一個位置可變參數后出現的普通參數,實際上不是普通的參數了,而是keyword-only參數。

1 def foo(*args,x):
2     print(args)
3     print(x)
4 foo(3,5)  #報錯,foo() missing 1 required keyword-only argument: 'x',相當於args已經截獲了所有的位置參數,
5 foo(3,5,7) #報錯
6 foo(3,5,x=7)

 

def(**kwagrs,x) #報語法錯誤,可以理解為kwargs會截獲所有與的關鍵字參數,就算是寫了x=5,x也永遠得不到這個值。

 

def fn(*,x,y)

  print(x,y)

fn(x=5,y=6)

*之后,普通參數都變成了必須給出的keyword-ony參數。

 

可變參數和參數默認值

1 def fn(*args,x=5):
2     print(x)
3     print(args)
4 
5 fn()
6 fn(6)
7 fn(x=6)
8 fn(1,2,3,x=10)

 

 1 def fn(y,*args,x=5):
 2     print("x={},y={}".format(x,y))
 3     print(args)
 4 
 5 fn()  #缺失位置參數y
 6 fn(5)
 7 fn(x=6) #缺失位置參數y
 8 fn(1,2,3,x=10)
 9 fn(y=17,2,3,x=10) #位置參數要放到關鍵字參數前面
10 fn(1,2,y=3,x=10) #重復給y賦值

 

1 def fn(x=5,**kwargs):
2     print('x={}'.format(x))
3     print(kwargs)
4 
5 fn(y=6,x=8)
6 fn(5,y=7)

函數參數

參數規則

參數列表一般順序是普通參數,缺省參數,可變位置參數,keyword-only參數(可帶缺省值),可變關鍵字參數。

def fn(x,y,z=3,*args,m=4,n,**kwargs)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM