python入門 函式引數的使用

2022-07-24 09:12:07 字數 4159 閱讀 6370

目錄可變長度的引數(*與**的用法)

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

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

print(x, y)

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

func(1,2)
形參與實參的關係:

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

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

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

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

# 形式一:

# func(1,2)

## 形式二:

# a=1

# b=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,3) # 報錯 多了乙個值

# func(1,)# 報錯 少了乙個值

func(1,2)

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

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

# func(1,2)

# func(2,1)

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

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

def func(x,y):

print(x,y)

func(y=2,x=1) # 1,2 這裡的y,x是形參裡的y,x

func(1,2) # 1,2

func(2,1) # 2,1

x = 1

y = 2

func(y,x) # 2,1 這裡的y,x取的是你外面定義的x,y 與形參裡的x,y不是乙個

位置實參必須放在關鍵字實參前

def func(x,y):

print(x,y)

func(1,y=2)

func(y=2,1) # 報錯 原因:位置引數跟在關鍵字引數後面

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

def func(x,y):

print(x,y)

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

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

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

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

def func(x,y=3):

print(x,y)

func(x=1)

func(x=1,y=44444) # 可以不用給y賦值 ,給y賦值了就變成賦值後的值

位置形參必須在預設形參的左邊

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

# 示範1:

m=22

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

print(x,y)

# m=3333333333333333333 # 沒用 會報錯 找不到m

func(1)

# 示範2:

m = [111111, ]

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

print(x, y)

func(1)

雖然預設值可以被指定為任意資料型別,但是不推薦使用可變型別

函式最理想的狀態:函式的呼叫只跟函式本身有關係,不受外界**的影響

可變長度指的是在呼叫函式時,傳入的值(實參)的個數不固定

而實參是用來為形參賦值的,所以對應著,針對溢位的實參必須有對應的形參來接收

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

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

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

print(x,y,z)

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

def my_sum(*args):

res=0

for item in args:

res+=item

return res # 10

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) # 11 22 33

iii:形參與實參中都帶*

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

print(x,y,args)

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

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

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

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

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

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

print(x,y,kwargs)

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

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

def func(x,y,z):

print(x,y,z)

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

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

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

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

print(x,y,kwargs)

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

func(**)

# 111 222

# 111 222

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

def func(*args,**kwargs):

print(args)

print(kwargs)

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

# (1, 2, 3, 4, 5, 6, 7, 8)

#

def index(x,y,z):

print('index=>>> ',x,y,z) #index=>>> 1 2 3

# index(*args,**kwargs)

index(*(1,),**)

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

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

# index=>>> 1 2 3

# index=>>> 1 2 3

# index=>>> 1 2 3

python入門之函式與引數

import time defwrite time time format y m d x time current time.strftime time format with open information a as f f.write current time s n time curren...

python 函式引數 和 的使用

單個星號 1 parameter 是用來接受任意多個引數並將其放在乙個元組中。如 def demo params for param in params print param a 1 b 2,3 demo a,b 輸出為 1 2,3 2 函式在呼叫多個引數時,在列表 元組 集合 字典及其他可迭代物...

Python 基礎 函式的使用 引數

在宣告函式時,如果有一些引數是執行時的必要條件,或者說在編寫的過程中大量出現,則可以把它設為預設值引數。呼叫函式時,如果沒有傳入對應的實參值,則函式使用宣告時則使用預設值引數。def babble words,time 1 print word time 對babble 進行呼叫 babble he...