如何在python中跳过可选参数,并直接调用* args

时间:2016-11-24 11:53:48

标签: python arguments optional-parameters optional-arguments

我正在创建一个非常基本的比赛市场解决方案,将用于博彩商店。我有一个看起来像这样的函数:

def create_market(name, match, providerID=str(uuid.uuid4()), market_kind=4, *market_parameters):

我想在跳过namematch时调用只有market_parametersproviderIDmarket_kind的函数(因为这些是可选的)< / p>

请记住,*market_parameters将是一个将在函数内发送的dicts元组。我解压缩就像:

for idx, data in enumerate(args):
    for k, v in data.iteritems():
        if 'nWays' in k:
            set_value = v

当我设置此词典时

market_parameters = {'nWays' : 5}

并调用create_market('Standard', 1, *market_parameters)

之类的函数

我似乎无法获取函数体内的数据。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

通过像*market_parameters一样解压缩,您可以将解压缩的值作为providerID发送(如果您的字典中有更多值,那么providerIDmarket_kind等等)

您可能需要

def create_market(name, match, *market_parameters,
                  providerID=str(uuid.uuid4()), market_kind=4):

并调用函数如:

create_market('Standard', 1, market_parameters) # you don't need to unpack it.

如果您想设置providerIDmarket_kind,那么:

create_market('Standard', 1, market_parameters, providerID=your_provider_id, market_kind=your_market_kind)