使用可选参数和多个参数的可行性

时间:2013-07-18 16:50:12

标签: python python-3.3

只是想知道是否可以在同一个函数中使用可选参数作为多个参数。我环顾四周,觉得好像我的词汇错了或什么的。例如:

def pprint(x, sub = False, *Headers):
  pass

我是否仍然可以使用多个标题来调用它,而无需始终将TrueFalse放入sub?我觉得这不是因为Headers不会知道它从哪里开始。我想明确说明sub = True,否则默认为False

3 个答案:

答案 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', [])