python - 将参数传递给具有命名参数的函数

标签 python python-3.x arguments

如何将命名参数从另一个函数传递给一个函数?

在过去的 8 小时里,我查看了 wrappers、argparse、Google。我错过了一些重要的时间。

def my_func(a='something', b='something_else'):
    # add a and b
    return something

def slave(func, args):
    result = func(args)
    return result

slave_work = {my_func, (a=50, b=90)}

print (slave(slave_work)

应该输出 140。我怎样才能做到这一点?

最佳答案

您现在所做的只是将一个集合作为单个参数传递给 slave。因此,您可能会在缺少位置参数时遇到 TypeError

你可能想把你的 slave_work 变成一个字典(现在它是一个集合),然后它看起来像:

slave_work = {'func': my_func, 'args': {'a': 50, 'b': 90}}

现在你可以解压字典了:

print(slave(**slave_work))

这或多或少等同于:

print(slave(func=slave_work['func'], args=slave_work['args'])

然后在您的 slave 函数中相应地更改为:

result = func(**args)

另一种选择是使用列表(或本例中的元组)解包。所以你的slave_work也可以是:

slave_work = {'func': my_func, 'args': (50, 90)}

然后你对 slave 的调用将是相同的,但是 inside slave 更改为:

result = func(*args)

不同之处在于,这将根据参数的位置而不是名称来解压参数。

关于python - 将参数传递给具有命名参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57476468/

相关文章:

python - 使用嵌套 for 循环的推导式创建字典

bash - 将字符串作为带空格的参数传递给 bash 函数

python - 安装 openpyxl 2.5

python - 两个异步任务 - python 中的一个依赖于另一个任务

python - 从标记中获取子字符串以及标记之后的下一个 200 个字符

c# - 将参数传递给已经运行的应用程序

ios - 我可以将私有(private)变量传递给将通过 Storyboard 实例化的 UIViewController 吗?

python - 在 python 中使用多处理并行化递归代码

python - 如何在 Python 中创建 session 变量?

python - 使用 GAE 用户服务 - 无法获取 "sign-in as a different user"