调用函数时跳过位置参数

时间:2020-01-16 17:53:05

标签: python

我正在尝试调用由其他人定义/创建的python函数。该函数将3个参数输入明确要求为

def function_name (argument1 argument2 argument3):

但是,在函数内部,只有argument1和argument3被使用,而argument2被完全忽略。如果我不能修改此函数定义并需要调用此函数,该如何跳过提供arguments2的呢? 喜欢

function_name (value1, *, value3)

function_name(value1, whatever_fake_value, value3)

我知道后一种选择肯定会起作用,但是我可以明确显示(以减少将来的困惑)在此函数调用中已跳过参数。

4 个答案:

答案 0 :(得分:2)

创建一个包装器函数,该函数调用您无法更改的旧函数,并传递您关心的参数,并使用默认值代替“死”参数,并提供简洁明了的注释,以解释将来后代的确切情况。所以你未来的自我对你很满意。

def new_wrapper_function(arg1, arg2):
    # this function is a wrapper that calls old_function with a default argument in position 2 because it is unused
    old_function(arg1, default_dead_arg, arg2)

您可能希望包装函数将None传递为“死”参数,例如:

def new_wrapper_function(arg1, arg2):
    # this function is a wrapper that calls old_function with a default argument in position 2 because it is unused
    old_function(arg1, None, arg2)

答案 1 :(得分:1)

您可以将argument2设为可选参数,并为其指定默认值。例如:

def function_name(arg1, arg3, arg2=None):
    pass

然后您可以检查arg2是否有效,否则可以忽略它。

答案 2 :(得分:0)

为什么不能更改定义?如果您绝对必须按原样使用它,则可以传递“无”或一个空列表。

function_name(arg1,None,arg2)

答案 3 :(得分:0)

传递None作为第二个参数。没有伤害就没有犯规。

由于所有参数都是必需参数且没有默认值,因此即使通过传递命名参数也以任何方式跳过第二个参数都会引发TypeError异常。

相关问题