函式的引數

2022-04-10 20:21:59 字數 4276 閱讀 7834

# 1、功能 :包裹**,實現功能,達到目的

# 2、特點 :反覆呼叫,提高開發效率,便於**維護

# 函式名 :變數命名規則

# 函式的定義

def func():

pass

# 函式的呼叫

func()

# 形式引數的順序

# 位置引數 > 預設引數 > *args > 命名關鍵字引數 > **kwargs

1.2.1.1 位置引數

def func(a,b):

print(a,b)

1.2.1.2 預設引數

def func(a = 0,b = 9):

print(a,b)

1.2.1.3 位置引數 + 預設引數

"""

預設形參必須跟在位置形參的身後,順序是一定的

"""def func(a ,b ,c = 4 , d = 5):

print(a,b,c,d)

1.2.2.1 位置傳參

"""

在函式呼叫時:實參數量及順序需要與形參一一對應

"""def func(a,b):

print(a,b)

func(5,8) # 5 8

func(8,5) # 8 5

1.2.2.2 關鍵字傳參

"""

在函式呼叫時:

如果給予實參,那麼直接使用實際引數

如果沒有給予實參,那麼使用引數預設自帶的值

"""def func(a = 0,b = 9):

print(a,b)

func(5,8) # 5 8

func(8,5) # 8 5

func(1) # 1 9

1.2.2.3 位置傳參 + 關鍵字傳參

"""

1、關鍵字傳參是對具體的某個引數賦值,具體的順序可以打亂

2、關鍵字實參必須跟在位置實參的身後,順序是一定的

3、預設引數和關鍵字實參 在寫法上一模一樣

乙個是在函式的定義處

乙個是在函式的呼叫處

"""def func(a,b,c,d,name = "name",age = 18):

print(a,b,c,d,name,age)

func(1,2,3,4,age = 20 , name = "bajie") # 1 2 3 4 bajie 20

func(1,2,3,age = 20,4 , name = "bajie") # error

1.2.3.1 收集引數 (在函式的定義處 -----> 聚合)

# *args 在函式的定義處專門用來收集多餘的沒人要的 位置實參

def func(a,b,c,*args):

print(a,b,c) # 1 2 3

print(args) # (4, 5, 5, 6, 7, 8)

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

​# **kwarge 在函式的定義處專門用來收集多餘的沒人要的 關鍵字實參

def func(a=1,b=2,c=3,**kwargs):

print(a,b,c) # 15 16 17

print(kwargs) #

​func(f=1,g=2,j=3,a=15,b=16,c=17)

1.2.3.2 收集引數 (在函式的呼叫處 -----> 打散)

# * 把列表裡面的所有元素拿出來,當成引數乙個乙個賦值給func進行呼叫

def func(a,b,c = 5,d = 6):

print(a,b) # 1 2

print(c,d)

lst = [1,2]

func(*lst,c=3,d=4)

# **把字典裡面的所有元素拿出來,拼裝成鍵=值的引數形式,賦值給func進行呼叫

def func(a,b,c = 5,d = 6):

print(a,b)

print(c,d) # 3 4

dic =

func(1,2,**dic,)

1.2.3.3 練習示例

# 任意個數字串的拼接

"""班長:宋雲傑

班花:劉彩霞

班草:劉子濤

吃瓜群眾:牧樹人,晏國彰,劉聰

"""def func(**kwargs):

print(kwargs)

# 定義乙個字典,存放每一位同學的身份

dic =

strvar1 = ""

strvar2 = ""

# 遍歷字典中的鍵值對

for k,v in kwargs.items():

print(k,v) # monitor 宋雲傑 class_flower 劉彩霞 class_grass 劉子濤 ....

# 判斷鍵是否在字典當中,如果在,獲取對應的身份,拼裝成字串

if k in dic:

strvar1 += dic[k] + ":" + v + "\n" # 班長 + ":" + 宋雲傑 + '\n'

else:

strvar2 += v + ","

# 去掉右邊多餘的\n和,形成最後的效果

print(strvar1.strip())

print("吃瓜群眾:"+ strvar2.rstrip(","))

"""

定義命名關鍵字引數的兩種方式:(在函式呼叫時,必須使用命名關鍵字引數來進行賦值)

(1)def func(a,b,*,c) c是命名關鍵字

(2)def func(*args,c,**kwargs) c是命名關鍵字引數

"""# 定義方式一

def func(a,b,*,d,c):

print(a,b) # 1 2

print(d) # 3

print(c) # 10

func(1,2,d = 3,c=10)

​# 定義方式二

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

print(args) # (1, 2, 3, 4, 5, 6)

print(c) # 100

print(kwargs) #

func(1,2,3,4,5,6,a=1,b=2,d=6,c=100)

# 讀**測結果

def f1(a, b, c=0, *args, **kw):

print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)

​def f2(a, b, c=0, *, d, **kw):

print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)

​# 以上兩個函式 列印結果

#(一)

f1(1, 2)

f1(1, 2, c=3)

f1(1, 2, 3, 'a', 'b')

f1(1, 2, 3, 'a', 'b', x=99)

f2(1, 2, d=99, ext=none)

​#(二)

args = (1, 2, 3, 4)

kw =

f1(*args, **kw)

​#(三)

myargs = (1, 2, 3)

mykw =

f2(*myargs, **mykw)

​#(四)

def f1(a, b, c=0, *args,d,**kw):

print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)

print(d)

f1(1,2,3, 'a', 'b',d=67, x=99,y=77)

函式的引數

參考 先說一下預設引數 當我們呼叫乙個函式的時候,忘記傳入相應的引數了,那麼函式肯定呼叫失敗。為了讓函式可以在 失誤 的情況下也可以呼叫出來,那麼預設引數就可以派上用場了。例如,計算x2 可以完全把第二個引數值設為預設引數。def power x,n 2 s 1 while n 0 n n 1 s ...

函式的引數

沒有引數 定義函式和呼叫函式時括號裡都不寫內容 2.有乙個引數 傳什麼就是什麼 3.有多個引數 站在實參的角度上 按位置傳參 按關鍵字傳參 混著用可以 但是必須先按照位置傳參,再按照關鍵字傳參。不能給同乙個變數傳多個值。站在形參的角度上 位置引數 必須傳,且有幾個引數就傳幾個值 預設引數 可以不傳,...

函式的引數

現在,我們已經把函式返回值相關的事情研究清楚了,我們自己已經完成了乙個可以返回字串長度的函式。但是現在這個函式還是不完美,之前我們使用len函式的時候得是length len hello world 這樣我可以想計算誰就計算誰的長度。但是現在我們寫的這個函式,只能計算乙個 hello world 的...