只是想知道是否可以在同一个函数中使用可选参数作为多个参数。我环顾四周,觉得好像我的词汇错了或什么的。例如:
def pprint(x, sub = False, *Headers):
pass
我是否仍然可以使用多个标题来调用它,而无需始终将True
或False
放入sub?我觉得这不是因为Headers
不会知道它从哪里开始。我想明确说明sub = True
,否则默认为False
。
答案 0 :(得分:6)
在Python 3中,使用:
def pprint(x, *headers, sub=False):
pass
在位置之后放置关键字参数。此语法在Python 2中不起作用。
演示:
>>> def pprint(x, *headers, sub=False):
... print(x, headers, sub)
...
>>> pprint('foo', 'bar', 'baz', sub=True)
foo ('bar', 'baz') True
>>> pprint('foo', 'bar', 'baz')
foo ('bar', 'baz') False
在调用此处定义的sub
函数时,必须使用关键字参数为pprint()
指定不同的值。
答案 1 :(得分:0)
我想说是的,因为很多matplotlib(例如)方法都有类似的东西......
例如,
matplotlib.pyplot.xcorr(x, y, normed=True, detrend=<function detrend_none at 0x2523ed8>, usevlines=True, maxlags=10, hold=None, **kwargs)
当我使用它时,我可以通过说maxlags=20
来指定任何关键字参数。您执行必须在关键字参数之前指定所有非keyworded参数(在您的情况下为x
)。
答案 2 :(得分:0)
请执行以下操作:
def pprint(x, **kwargs):
sub = kwargs.get('sub', False)
headers = kwargs.get('headers', [])