0

好的,这就是交易,假设我有一个函数(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' }

(在这种情况下,“动作”将是移动,但就像我说的,它是根据某些用户输入动态分配的)

我想做的是这样的:

action = { 'action': move(2,3), 'other_stuff': 'stuff' }

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

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

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

4

1 回答 1

5

用于functools.partial()存储带有参数的函数:

from functools import partial

action = {'action': partial(move, 2, 3), 'other_stuff': 'stuff'}

调用action['action']()导致move(2, 3)被调用。

于 2013-05-02T17:15:08.880 回答