函數的參數

函數的參數

位置參數

  • 傳入參數的值是按照順序依次複製過去的

#創建一個帶有位置參數的函數,返回一個字典
def menu(name, age, pro):
    return {'name': name, 'age': age, 'pro': pro}menu('jobs', '55', 'CEO')
{'age': '55', 'name': 'jobs', 'pro': 'CEO'}

關鍵字參數

  • 調用參數時指定對應參數的名字,可以採用與函數定義不同的順序調用

  • 關鍵字參數和位置參數可以混用

  • 混用時先考慮位置參數

#關鍵字參數 
menu(pro='CEO', age='55', name='jobs')
{'age': '55', 'name': 'jobs', 'pro': 'CEO'}
#混用
menu('jobs',  pro='ceo', age='55',)
{'age': '55', 'name': 'jobs', 'pro': 'ceo'}

默認參數

  • 定義函數時可以給參數設置默認值,當調用方沒提供參數值時使用默認值

#定義函數給pro設置默認值
def man1(name, age, pro='CEO'):
    return {'name':name, 'age':age, 'pro':pro}
#調用時給參數提供值
man1(name='jobs', age='55', pro='CTO')
{'age': '55', 'name': 'jobs', 'pro': 'CTO'}
#調用時不給參數提供值
man1('jobs', '55')
{'age': '55', 'name': 'jobs', 'pro': 'CEO'}

使用*收集位置參數

  • 當參數被用在函數內部時, 星號將一組可變數量的位置參數集合成參數值的元組

  • 函數同時指定了位置參數和args,args會收集剩下的參數

#args是傳入到函數 print_args() 的參數值的元組
def print_args(*args):
        #使用參數的時候不帶*會以元組輸出
    print('Positional argument tuple:', args)
#無參數調用
print_args()
Positional argument tuple: ()
#傳入參數調用,參數已元組形式輸出
print_args(3, 2, 1, 'wait!', 'hello')
Positional argument tuple: (3, 2, 1, 'wait!', 'hello')
#函數同時指定了位置參數和*argsdef 
print_args1(name, age, *args):
    print(name)
    print(age)
    #使用args帶*則不需要以元組輸出
    print(*args)#調用print_args1('jobs', '55', 'CEO', 'apple')
jobs
55
CEO apple

使用**收集關鍵字參數

  • 使用兩個星號可以將參數收集到一個字典中,參數的名字是字典的鍵,對應參數的值是字典的值

#打印輸出關鍵字參數
def print_kwargs(**kwargs):
    print('Keyword arguments:', kwargs)
#使用關鍵字參數調用函數
print_kwargs(name='jobs', age='55', pro='CEO')
Keyword arguments: {'age': '55', 'pro': 'CEO', 'name': 'jobs'}
#混用
m = 5l = ['a', 'b', 'c']d = {'a':'1', 'b':'2', 'c':'3'}def print_1(m, *args, **kwargs):
    print(m)
    print(args)
    print(kwargs)
#調用
print_1(m,*l,**d)
5
('a', 'b', 'c')
{'b': '2', 'c': '3', 'a': '1'}
 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章