问题描述
我正在尝试习惯在 python 函数中使用 *args 和 **kwargs,但我很难适应它。
例如:
def foo(a,b,*args):
print(a)
print(b)
if args1 == True:
print(args2)
else:
print(a+args1)
所以如果我运行它
foo('one','two')
我希望它打印 'one'
和 'two'
,
但如果我跑
foo('one','two',True,'three')
我想得到 'one'
、'two'
和 'three'
,
而作为
foo('one','three')
我想得到 'one','onethree'
我怎样才能实现它?
解决方法
参数
定义:
def foo1(a,b,*args):
print(a)
print(b)
if args:
for arg in args:
print(arg)
用法:
foo1(1,2,3,4)
foo1(1,*[3,4])
kwargs
定义:
def foo2(a,**kwargs):
print(a)
print(b)
if kwargs:
for k,v in kwargs.items():
print(f'{k}: {v}')
用法:
foo2(1,c=3,d=4)
foo2(1,**{'c':3,'d':4})
,
def foo(a,*args):
print(a)
print(b)
if args and args[0]==True:
print(args[0])
else:
print(a+args[0])
foo('one','two','three')
one
two
onethree