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

How to skip optional arguments in python, and call *args directly

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

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

我想调用一个只包含 namematchmarket_parameters 的函数,同时跳过 providerIDmarket_kind(因为这些是可选的)

请记住,*market_parameters 将是将在函数内部发送的字典元组。我将其解压为:

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)

我好像无法获取函数体内的数据。

我做错了什么?

通过像 *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)