将函数(动态分配)与特定参数一起分配给变量.

GGa*_*zzi 0 python

好的,所以这是交易,比如我有一个函数(take_action),它调用另一个函数.但我们不知道take_action将调用哪个函数.

由于这个问题我得知这一部分,问题是,在那个问题上他们处理的是不带参数的函数,我的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' }
Run Code Online (Sandbox Code Playgroud)

(在这种情况下,'动作'会移动,但就像我说的那样,根据某些用户输入动态分配)

我想做的是这样的:

action = { 'action': move(2,3), 'other_stuff': 'stuff' }
Run Code Online (Sandbox Code Playgroud)

(显然在那里调用函数,因为它有(),因此它不起作用)

我只是一个初学程序员,我唯一想到的是使用一个列表,它位于dic中的另一个键中,但是它只传递一个列表参数,而不是传递列表的每个内容作为论点.

实现这一点的方法是什么,所以'action'键(或另一个键上的字典?)还存储了我在take_action上调用它时应该使用的参数?

Mar*_*ers 5

使用functools.partial()存储功能,其参数:

from functools import partial

action = {'action': partial(move, 2, 3), 'other_stuff': 'stuff'}
Run Code Online (Sandbox Code Playgroud)

调用action['action']()结果move(2, 3)被调用.