繁体   English   中英

将函数(动态分配的)以及特定的参数分配给变量。

[英]Assigning a function (which is assigned dynamically) along with specific parameters, to a variable.

好的,这就是问题,比如说我有一个函数(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上调用它时应该使用的参数?

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

from functools import partial

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM