将一个函数(它是动态分配的)和特定参数一起分配给一个变量。

问题描述:

好吧,所以这里的交易,说我有一个函数(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)被调用。