如何调用参数信息在dict中的函数

时间:2017-08-14 03:22:39

标签: python-3.x dynamic

我在尝试理解Mypy代码的同时正在练习这个练习,我们走了:

我动态导入了一个函数func,并创建了一个dict argument_info

  • 键作为参数名称(使用inspect收集)和
  • 值作为在运行时收集的相应值。

为简单起见,我们假设func的参数目前没有默认值,* args或** kwargs。

那么如何使用func中的值调用函数argument_info

示例实施:

# file my_module.py
def add(a, b):
    return a + b

-------------------------------

# file main.py
argument_info = {
    "a": 10,
    "b": 20,
    "garbage": "irrelevant data"
}
func = getattr(my_module, 'add')
# how to do the following line dynamically
func(info['a'], info['b'])

2 个答案:

答案 0 :(得分:0)

试试这个:

def add(a, b):
    return a + b


# file main.py

argument_info = {
    "a": 10,
    "b": 20
}

print(add(**argument_info))

答案 1 :(得分:0)

试试这个

# file my_module.py
def add(a, b):
    return a + b

-------------------------------

# file main.py
argument_info = {
    "a": 10,
    "b": 20,
    "garbage": "irrelevant data"
}
func = getattr(my_module, 'add')
args = func.__code__.co_varnames
info = {k:v for k, v in argument_info.items() if k in args}
print func(**info)