将一个函数(它是动态分配的)和特定参数一起分配给一个变量。
问题描述:
好吧,所以这里的交易,说我有一个函数(take_action),调用另一个函数。但是我们不知道take_action会调用哪个函数。将一个函数(它是动态分配的)和特定参数一起分配给一个变量。
我有这样的一部分想通了感谢this question的事情是,他们对付的是没有参数的功能这个问题,我的take_action可以采取的是彼此完全不同的几种不同的功能之一,拥有完全不同采取的行动,不同的论点。
现在对于一些示例代码:
def take_action():
action['action']()
#does other stuff with 'other_stuff_in_the_dic'
def move(x,y):
#stuff happens
action = {'action': move, 'other_stuff_in_the_dic': 'stuff' }
(在这种情况下,“行动”是动,但就像我说的,这是根据特定用户输入动态分配)
我会喜欢做的,是这样的:
action = { 'action': move(2,3), 'other_stuff': 'stuff' }
(显然调用该函数存在,因为它具有(),因此它不会工作)
我只是一个初学者程序员,我唯一想到的就是使用一个列表,它是在dic中的另一个键中,但是只会传递一个列表参数,而不是传递列表中的每个内容作为论点。
什么是实现此目的的一种方法,所以'action'键(或另一个键上的字典?)还存储了在take_action上调用它时应该使用的参数?
答
使用functools.partial()
存储功能,其参数:
from functools import partial
action = {'action': partial(move, 2, 3), 'other_stuff': 'stuff'}
调用action['action']()
结果move(2, 3)
被调用。