我试图在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?
答案 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}