函數的參數
位置參數
傳入參數的值是按照順序依次複製過去的
#創建一個帶有位置參數的函數,返回一個字典 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'}