【问题标题】:Passing arguments of a function as parameter names in other function将函数的参数作为参数名称传递给其他函数
【发布时间】:2018-09-28 09:36:45
【问题描述】:

假设我们在 Python3 中有两个函数 fooget_id。我想在foo 函数中调用get_id 函数,同时使用foo 函数的参数作为get_id 函数中的参数名称。例如:

我调用foo函数:

result = foo("Person","name","John")

而函数体是:

def foo(arg_1, arg_2, arg_3): res = get_id(arg_1, arg_2 = arg_3) return res

我想要的是:

res = get_id("Person", name = "John")

以便 get_id 函数将由 foo 函数的 arg_2 参数参数化。但是,到目前为止,我这样做的方式会导致错误,因为 python 将其解释为字符串。欢迎任何建议。

【问题讨论】:

  • 你可以在函数内部进行。喜欢get_id(arg_1, arg_2, arg_3): arg_2 = arg_3
  • 不,那不行。
  • 这个的具体用例是什么?
  • get_id函数属于一个导入的包,我需要以这种特定的方式使用它。

标签: python function arguments parameter-passing


【解决方案1】:

我应该尝试理解你为什么要这样做:) 但这里可能有一个解决方案:

def foo(arg_1, arg_2, arg_3):
    kwargs = {
        'arg_1_name': arg_1,
        arg_2: arg_3,
    }
    return get_id(**kwargs)

只需确保将arg_1_name 替换为get_id 函数中使用的参数的实际名称

【讨论】:

  • “我可能不应该试图理解你为什么要这样做” => 确实:-|
【解决方案2】:

这是将参数名称作为字符串传递的方式:

def test(a):
    print(a)

test(**{'a': 'hello world'})

我相信您可以根据您的问题调整此解决方案

【讨论】:

    最近更新 更多