获取值的名称作为* args和** kwargs传递

时间:2013-11-15 20:18:41

标签: python

我正在尝试获取可能存在或不存在于子类函数的args或kwargs中的前缀值。

原始功能:

def list(self, prefix='', delimiter='', marker='', headers=None):
    pass

子类功能:

def list(self, *args, **kwargs):
    # get prefix from args[0] or kwargs['prefix']
    pass

我试过了:

kwargs.get('prefix', args[0])

但如果没有传递args则失败。

我试过了:

prefix = ''

if len(args):
    prefix = args[0]

if 'prefix' in kwargs:
    prefix = kwargs['prefix']

if prefix != '':
    # Do something with the prefix

它有效,但不是很优雅。

还尝试用kwargs搜索zip() args的方法。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

这个应该按预期工作:

def list(self, *args, **kwargs):
    prefix = kwargs.get('prefix', args[0] if args else '')