可变参数值列表拆装包
def func(a,b=12,c=3,**kwargs):
默认值
print(a,b,c,kwargs)
func(1)
func(2,b=10)
func(2,e=1)
func(3,5,6,a=1,b=2)
func(3,c=2,b=5,f=2)
结果为:
5 (6, (4, 5, 6), 7)
1 12 3 {}
2 10 3 {}
2 12 3 {'e': 1}
3 5 2 {'f': 2}
如果想把列表不是作为整体传入元组可变参数,而是拆分开传入元组,可以在列表变量前加上*即可,
def func(a,*args):
print(a,args)
l=[1,2,3]
func(2,3,*l)
结果为:
2 (3, 1, 2, 3)
def func(name,*kwargs):
if len(kwargs) > 0:
for i in kwargs:
print('{}学过{}'.format(name,i))
else:
print('没有学过任何编程知识')
course=['数学','语文','英语']
func('zhouwei',*course)
zhouwei学过数学
zhouwei学过语文
zhouwei学过英语
总结
无参数函数:
def func(): pass
func() ---->调用
有参数函数
普通参数
def func(name,age): pass
dunc(‘aa’,18) ---->形参和实参的个数要一致
可变参数
A、def func(args): pass
func() ---->函数调用时,实参的个数可以没有,也可以多个 *不能是关键字参数
B、der func(**kwargs)#关键字参数 pass
func(key=value)
C、def func(*args,**kwargs) pass
list1=[1,3]
dict1={'1':'a','2':'b'}
func(*list1,**dict1)
D、可变参数应该放在普通参数后面。
默认值参数
def func(name,age=18) pass
func(‘tom’) —>tom 18#默认值可以不用传参
func(‘jim’,age=19) —>jim 19#默认值可以重新覆盖值
|