我在尝试理解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'])
答案 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)