传入参数的值是按照顺序依次复制过去的
#创建一个带有位置参数的函数,返回一个字典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‘}
本文出自 “左手右手” 博客,请务必保留此出处http://mofeihu.blog.51cto.com/1825994/1874091
原文地址:http://mofeihu.blog.51cto.com/1825994/1874091