Python學習教程(Python學習路線):Python函數參數匹配模型(下)

Python學習教程(Python學習路線):Python函數參數匹配模型(下)bash

Python學習教程:Python函數參數匹配模型(下)

任意參數 *函數

當咱們的函數接收參數爲任意個,或者不能肯定參數個數時,咱們,能夠利用*來定義任意數目的參數,這個函數調用時,其全部不匹配的位置參數會被賦值爲元組,咱們能夠在函數利用循環或索引進行使用學習

def f(*args):
 # 直接打印元組參數
 print(args)
 print('-'*20)
 # 循環打印元組參數
 [print(i) for i in args]
 ...
# 傳遞一個參數
f(1)
print('='*20)
# 傳遞5個參數
f(1, 2, 3, 4, 5)
複製代碼

示例結果:ui

(1,)
--------------------
1
====================
(1, 2, 3, 4, 5)
--------------------
1
2
3
4
5
複製代碼

###任意參數 **spa

而**是用於收集關鍵字參數並將這些參數傳遞給一個新的字典,即在函數中咱們能夠利用處理字典的方式處理這些參數code

def f(**args):
 # 直接打印字典參數
 print(args)
 for key, value in args.items():
 print('{}: {}'.format(key, value))
f(a=1)
print('='*20)
f(a=1, b=2, c=3)
複製代碼

示例結果:orm

{'a': 1}
a: 1
====================
{'a': 1, 'b': 2, 'c': 3}
a: 1
b: 2
c: 3
複製代碼

任意參數混合cdn

咱們能夠混合通常參數、*參數以及**參數完成實現更加複雜的調用方式。blog

def f(a, *targs, **dargs):
 print(a, targs, dargs)
f(1,2,3, x=1, y=2)
複製代碼

示例結果:教程

1 (2, 3) {'x': 1, 'y': 2}
複製代碼

能夠看到這種調用方式並不那麼直觀,甚至有些「混淆視聽」,那麼怎麼在複雜任意參數的調用時,是的在函數調用更加直觀明瞭?

解包參數

咱們能夠在函數調用時,直接利用*和**進行參數傳遞,而後讓函數自動解包,也就相似以前的序列解包,使用調用時更加的直觀。

def f(a, b, c, d):
 print(a, b, c, d)
f(1, *(2, 3), **{'d': 4})
複製代碼

示例結果:

1 2 3 4
複製代碼

更多的Python學習教程和Python學習路線會繼續爲你們更新哦!

相關文章
相關標籤/搜索