如何解决如何使用参数调用存储为变量的函数 - Python 3
def some_function():
print("This will always be the same")
def some_other_function(text):
print(text)
some_variable = "hello"
list_of_elements = [
"element_one": {
"name": "static_print","function": some_function
},"element_two": {
"name": "flexible_print","function": some_other_function
}
]
在上面的最小代码示例中,我在一个列表中有几个元素,每个元素实际上代表一个元素(我用 pygame 制作的游戏菜单)。这些元素中的每一个都是一个字典,有几个键:值对,其中一个是“函数”。然后该函数被有选择地调用以获取所选元素。但是,有时需要使用参数调用存储在此键值对中的函数,此时我无法弄清楚该怎么做。
我设法用条件语句做到了这一点,但这需要单独检查每个函数,这绕过了使用此字典列表作为具有多个(菜单)元素的灵活和通用方式的全部目的,每个元素都有其属性和相关的功能组织得井井有条。
有没有一种优雅的方法可以做到这一点,如果没有,您的个人方法是什么?
解决方法
在阅读了许多建设性的评论和一些修补后,我找到了我真正需要的东西。
此解决方案主要基于 Matteo Zanoni 的评论,并进行了一些修改以解决丢失 'args' 和 'kwargs' 的可能性,具体取决于被调用的特定函数。这是通过为 'get' 方法提供适当的默认值来处理的 - 'args' 为空列表,'kwargs' 为空字典。
对于这样结构的字典:
dictionary = {
{
"function": some_function,"args": [1,4],},{
"function": some_other_function,}
我们可以这样做,这对于每个“函数”是否有任何关联的“args”或“kwargs”都需要灵活处理:
dictionary[element]["function"](
*dictionary[element].get("args",[]),**dictionary[element].get("kwargs",{}),)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。