如何将命名参数从另一个函数传递给一个函数?
在过去的 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/