提问人:user14073111 提问时间:9/6/2023 更新时间:9/6/2023 访问量:40
在 python 中使用字典调用函数
Call functions using dictionaries in python
问:
假设我有这个伪代码:
x11 = {
"exec": {
"test1": "test1"
},
"mount": {
"test2": "test2"
},
"unmount": {
"test3": "test3"
},
}
def get_exec(dict1):
return dict1["test1"]
def get_mount(dict1):
return dict1["test2"]
def get_unmount(dict1):
return dict1["test2"]
x1 = ["exec", "mount", "unmount"]
for elem in x1:
e1 = x11.get(elem)
get_e = {
"exec": get_exec(e1),
"mount": get_mount(e1),
"unmount": get_unmount(e1),
}
get_e[elem]
基本上,我试图避免很多 if 条件,并希望使用字典并在每次迭代中调用正确的函数。但是我所拥有的不起作用,因为随后调用了字典,它将转到每个函数并执行操作。基本上,在我的情况下,每个函数都在检查不同的键,当 e1 传递给函数时(仅在“exec”情况下有效,那么它在其他函数上失败......
有没有办法让类似的东西有效?
答:
1赞
user14073111
9/6/2023
#1
嗯,似乎很容易。通过改变这一点,它起作用了:
for elem in x1:
e1 = x11.get(elem)
get_e = {
"exec": get_exec,
"mount": get_mount,
"unmount": get_unmount,
}
print(get_e[elem](e1))
2赞
quamrana
9/6/2023
#2
在定义字典时,你不能调用你的函数:
for elem in x1:
e1 = x11.get(elem)
get_e = {
"exec": get_exec,
"mount": get_mount,
"unmount": get_unmount,
}
get_e[elem](e1)
选择函数后调用该函数。
3赞
Henrique Andrade
9/6/2023
#3
函数是 Python 中的对象,因此它们可以是字典中的值
def func1():
...
def func2():
...
def func3():
...
x11 = {
"exec": func1,
"mount": func2,
"unmount": func3
}
然后你只需根据你拥有的键调用函数, 例如
# it will call func2
x11["mount"]()
上一个:Python 继承问题
下一个:Python中实例的动态装饰方法
评论