1. 程式人生 > >函式的引數知識點

函式的引數知識點

函式的引數
在python中函式引數的定義方式有以下4中方式
1、位置引數
在我們在傳參的時候,實參傳遞的順序按照形參定義的順序進行傳遞的傳參方式。

def sum_num(num1,num2):
    print(num1+num2)
sum_num(1,2)#1對應num,2對應num2.

2、關鍵字引數:
我們在傳參的時候,以形參等於實參的形式忽略形參定義的順序進行傳參的傳參方式。

def sum_num(num1,num2):
    print(num1)
    print(num2)
    print(num1,num2)
sum_num(num2=10,num1=20)#不受位置影響。

位置引數關鍵字引數混合使用

def sum_num(num1,num2):
    print(num1)
    print(num2)
    print(num1,num2)
sum_num(10, num1=20)#關鍵字引數在前,位置引數在後,能正常執行,
sum_num(num=10, 20)#否則報錯

3、預設引數:
是在我們定義引數時候,我們給形參一個預設值,在我們呼叫函式的時候,如果不給有預設值的形參傳參,會自動採用預設值。當某個值變化小的時候,我們就可以使用預設引數。

def save_userinfo(name,age,gender='男'):
    print('姓名:{},年齡:{},性別:{}'.format(name,age,gender))
save_userinfo('張三',20)
save_userinfo('花',20,gender='女')

4、可變引數(*args, **kwargs):
如果函式中的引數過多,我們定義起來非常的麻煩,呼叫起來也非常的麻煩,因此python給我們提供了可變引數型別。能處理比當初宣告時更多的引數,會將傳入的引數變成元組(*args)或者字典(**kwargs)
格式
*變數名,可接受多個位置引數。
(1).元組引數 *args

def func(*args):
    print(args)#(1,2,3,4,5,6)
    print(args[0],args[1])#獲取元組中的元素
func(1,2,3,4,5,6)

通過給形參前面新增*使引數變成一個元組,所有傳遞的引數變成元組的元素
args引數名稱可以任意命名,但是一般我們叫他 args。
(2)具有打散序列的功能

tup=(1,2,3,4)
print(*tup)#1 2 3 4
lst=['a','b','c']
print(*lst)#a b c
s1='hello'
print(*s1)#h e l l o

將元組中的123分別給abc引數賦值

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

(3)字典引數 **kwargs
接受多個關鍵字引數,變數名稱可以任意,但是一般使用keargs,所有傳遞的引數變成字典的鍵值對,這裡傳參要求鍵等於值的形式。
**kwargs結果型別是字典,傳遞值是以key=value方式傳入

def func(**kwarge):
    print(kwarge)
    print(kwarge['name'],kwarge['age'],kwarge['gender'])
func(name='張三',age=10,gender='男')

(4) 具有打散字典的功能**

def func(name,age):
    print(name,age)
dic={'name': '張三', 'age': 10}
func(**dic)#等價於下邊根據關鍵字取引數
func(name='張三',age=10)

(5)建立函式宣告引數時的順序:
位置引數、*args、預設引數、**kwargs

def func(a,*args,b=10,**kwargs):
    print(a)
    print(args)
    print(b)
    print(kwargs)
func('zs','ls',b='23',d=22,c=29)