将一个动态分配的函数(带有特定参数)分配给一个变量。
将一个动态分配的函数(带有特定参数)分配给一个变量。
好的,这样说吧,假设我有一个函数(take_action),它调用另一个函数。但我们不知道take_action将调用哪个函数。\n我通过这个问题找到了答案,问题是,那个问题中处理的是不带参数的函数,而我的take_action可能会取其中几个非常不同的函数,它们采取完全不同的操作,并带有不同的参数。\n现在给出一些示例代码:\n
def take_action(): action['action']() # 对'action'中的'other_stuff_in_the_dic'进行其他处理 def move(x,y): # 发生一些事情 action = {'action': move, 'other_stuff_in_the_dic': 'stuff' }
\n(在这种情况下,\'action\'将是move,但像我说的,它是根据特定用户输入动态分配的)\n我想做的是像这样:\n
action = {'action': move(2,3), 'other_stuff': 'stuff' }
\n(显然,这里调用了函数,因为有括号,所以这是行不通的)\n我只是一个初学者程序员,我想到的唯一办法是使用一个列表,它是字典内的另一个键,但这只会传递一个列表参数,而不是将列表中的每个内容作为参数传递。\n有什么方法可以实现这一点,使得\'action\'键(或字典中的另一个键)在我调用它时也存储应该使用的参数?
问题的出现原因是希望将一个动态分配的函数以及特定的参数赋值给一个变量。在上述代码中,使用了functools模块中的partial函数来实现这个目的。partial函数可以将一个函数与一部分参数绑定起来,生成一个新的函数。
解决方法是通过导入functools模块中的partial函数,并使用partial函数来创建一个字典。字典中的一个键值对表示一个动态分配的函数以及特定的参数。在上述代码中,action字典中的'action'键对应的值是一个partial函数,该函数将move函数与参数2和3绑定起来,生成一个新的函数。同时,字典中的'other_stuff'键对应的值是一些其他内容。
通过调用action字典中的'action'键对应的函数,可以触发对move函数的调用,并传入参数2和3。
下面是使用functools.partial函数的示例代码:
from functools import partial def move(x, y): print(f"Moving to ({x}, {y})") # 使用partial函数创建字典 action = {'action': partial(move, 2, 3), 'other_stuff': 'stuff'} # 调用字典中的函数 action['action']()
以上代码的输出结果为:
Moving to (2, 3)
通过使用functools.partial函数,可以将函数与特定的参数绑定起来,将其作为一个整体赋值给变量,从而实现动态分配函数以及特定参数的需求。