python之函式引數的使用

2022-04-10 20:46:45 字數 4584 閱讀 5847

形參:在定義函式階段定義的引數稱之為形式引數,簡稱形參,相當於變數名

def func(x, y):  # x=1,y=2

print(x, y)

實參:在呼叫函式階段傳入的值稱之為實際引數,簡稱實參,相當於變數值(func(1,2))

形參與實參的關係:

1、在呼叫階段,實參(變數值)會繫結給形參(變數名)

2、這種繫結關係只能在函式體內使用

3、實參與形參的繫結關係在函式呼叫時生效,函式呼叫結束後解除繫結關係

實參是傳入的值,但值可以是以下形式:

# 形式一:

func(1,2)

# 形式二:

a=1b=2

func(a,b)

# 形式三:

func(int('1'),2)

func(func1(1,2,),func2(2,3),333)

位置形參:在函式定義階段,按照從左到右的順序直接定義的"變數名"

特點:必須被傳值,多乙個不行少乙個也不行

def func(x,y):

print(x,y)

func(1,2)

func(1,2,3) #錯誤

func(1,) #錯誤

位置實參:在函式呼叫階段, 按照從左到有的順序依次傳入的值

特點:按照順序與形參一一對應

func(1,2)

func(2,1)

關鍵字實參:在函式呼叫階段,按照key=value的形式傳入的值

特點:指名道姓給某個形參傳值,可以完全不參照順序

def func(x,y):

print(x,y)

func(y=2,x=1)

func(1,2)

混合使用,強調1、位置實參必須放在關鍵字實參前

func(1,y=2)

func(y=2,1) #錯誤

2、不能能為同乙個形參重複傳值

func(1,y=2,x=3)  #錯誤

func(1,2,x=3,y=4) #錯誤

預設形參:在定義函式階段,就已經被賦值的形參,稱之為預設引數

特點:在定義階段就已經被賦值,意味著在呼叫階段可以不用為其賦值

def func(x,y=3):

print(x,y)

# func(x=1) ==> 1 3

func(x=1,y=44444) # 1 44444

def register(name,age,gender='男'):

print(name,age,gender)

register('三炮',18)

register('二炮',19)

register('大炮',19)

register('沒炮',19,'女')

位置形參與預設形參混用,強調:1、位置形參必須在預設形參的左邊

def func(y=2,x):

pass

2、預設引數的值是在函式定義階段被賦值的,準確地說被賦予的是值的記憶體位址

# 示範1:

m=2def func(x,y=m): # y=>2的記憶體位址

print(x,y)

m=3333333333333333333

func(1)

# 輸出值為 1 2

# 示範2:

m = [111111, ]

def func(x, y=m): # y=>[111111, ]的記憶體位址

print(x, y)

func(1)

# 輸出值為 1 [111111, 3333333]

m = [111111, ]

def func(x, y=m):

print(x, y)

func(1)

func(2)

func(3)

# 1 [111111, 3333333, 444444, 5555]

# 2 [111111, 3333333, 444444, 5555]

# 3 [111111, 3333333, 444444, 5555]

# ****************************************=

def func(x,y,z,l=none):

if l is none:

l=print(l)

func(1,2,3)

func(4,5,6)

new_l=[111,222]

func(1,2,3,new_l)

# [1, 2, 3]

# [4, 5, 6]

# [111, 222, 1, 2, 3]

可變長度指的是在呼叫函式時,傳入的值(實參)的個數不固定,而實參是用來為形參賦值的,所以對應著,針對溢位的實參必須有對應的形參來接收。

i:* 形參名:用來接收溢位的位置實參,溢位的位置實參會被*儲存成元組的格式然後賦值緊跟其後的形參名

*後跟的可以是任意名字,但是約定俗成應該是args

def func(x,y,*z): # z =(3,4,5,6)

print(x,y,z)

func(1,2,3,4,5,6)

def my_sum(*args):

res=0

for item in args:

res+=item

return res

res=my_sum(1,2,3,4,)

print(res)

ii: 可以用在實參中,實參中帶,先*後的值打散成位置實參

def func(x,y,z):

print(x,y,z)

# func(*[11,22,33]) # func(11,22,33)

# func(*[11,22]) # func(11,22)

l=[11,22,33]

func(*l)

iii: 形參與實參中都帶*

def func(x,y,*args): # args=(3,4,5,6)

print(x,y,args)

func(1,2,[3,4,5,6])

func(1,2,*[3,4,5,6]) # func(1,2,3,4,5,6)

func(*'hello') # func('h','e','l','l','o')

i:** 形參名:用來接收溢位的關鍵字實參,**會將溢位的關鍵字實參儲存成字典格式,然後賦值給緊跟其後的形參名

def func(x,y,**kwargs):

print(x,y,kwargs)

func(1,y=2,a=1,b=2,c=3)

ii: ** 可以用在實參中 (** 後跟的只能是字典),實參中帶** ,先**後的值打散成關鍵字實參

def func(x,y,z):

print(x,y,z)

func(*) # func('x','y','z')

func(**) # func(x=1,y=2,z=3)

錯誤func(**) # func(x=1,y=2)

func(**) # func(x=1,a=2,z=3)

iii: 形參與實參中都帶**

def func(x,y,**kwargs):

print(x,y,kwargs)

func(y=222,x=111,a=333,b=444)

func(**)

混用* 與 ** : * args必須在**kwargs之前

def func(x,*args,**kwargs):

print(args)

print(kwargs)

func(1,2,3,4,5,6,7,8,x=1,y=2,z=3)

案例:

def index(x,y,z):

print('index=>>> ',x,y,z)

index(*args,**kwargs)

# index(*(1,),**)

# index(1,z=3,y=2)

# 原格式---》彙總-----》打回原形

Python之函式的引數

二 在python中引數的種類 2 關鍵字實參 3 預設形參 在定義函式時,括號內定義的變數名,稱之為形式引數,簡稱形參 變數名 def func x,y x 1y 2 print x print y 在呼叫函式時,括號內傳入的值,稱之為實際引數,簡稱實參 變數值 func 1,2 在函式定義階段按...

Python之函式 引數

defpower x x就是乙個位置引數 return x x power 3 9 defpower x n 2 n即是預設引數,函式定義時傳入預設值 s 1 while n 0 n n 1 s s x return s power 2 函式呼叫時可以不傳入n的值,此時n即為預設值2 4 power...

Python函式之引數

1.預設形參 可以讓呼叫者有選擇地傳遞需要的資料,不寫引數則使用預設值 def functionname parameter1 defaultvalue1 functionbody e.g.deffun01 a,b,c 0 print a print b print c 2.位置形參 1 個數限定 ...