混合Python 2.x中的默认参数

时间:2014-08-10 10:22:06

标签: python python-2.7 arguments

我试图在Python 2.7中混合使用默认关键字参数,位置参数和关键字参数。从以下代码中,我期待profile=='system'args==(1,2,3)kwargs={testmode: True}

def bla(profile='system', *args, **kwargs):
    print 'profile', profile
    print 'args', args
    print 'kwargs', kwargs


bla(1, 2, 3, testmode=True)

我得到的是:

profile 1
args (2, 3)
kwargs {'testmode': True}

可以在Python 2.7中完成,还是需要Python 3.x?

1 个答案:

答案 0 :(得分:2)

在Python2中:

def bla(*args, **kwargs):
    profile = kwargs.pop('profile', 'system')
    print 'profile', profile
    print 'args', args
    print 'kwargs', kwargs

在Python3中,可以定义keyword-only arguments

def bla(*args, profile='system', **kwargs):
    print('profile', profile)
    print('args', args)
    print('kwargs', kwargs)

电话bla(1, 2, 3, testmode=True)产生

profile system
args (1, 2, 3)
kwargs {'testmode': True}