【问题标题】:How to skip optional arguments in python, and call *args directly如何跳过python中的可选参数,直接调用*args
【发布时间】:2017-04-08 17:15:02
【问题描述】:

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

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

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

请记住,*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)的函数

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

我做错了什么?

【问题讨论】:

  • "*market_parameters 将是一个字典" - 元组,用于位置参数; **kwargs 将是字典。

标签: python arguments optional-parameters optional-arguments


【解决方案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)

【讨论】:

  • 是的。而已。谢谢@Yevhen Kuzmovych。你是一个救生员。
  • @mutantkeyboard 我不确定您要做什么,但kwargs 可能很有用。
猜你喜欢
  • 1970-01-01
  • 2010-11-07
  • 2011-06-05
  • 2016-01-28
  • 2012-04-09
  • 1970-01-01
  • 2020-12-24
相关资源
最近更新 更多