是否可以将函数及其参数存储在变量中?

Bre*_*n H 1 python function

我已经看到很多关于将函数存储在变量中以供执行的信息,但显示的函数始终是:

def foo():
  print("Hello")
x = foo
x()
Run Code Online (Sandbox Code Playgroud)

种类。是否可以存储函数及其变量以供以后执行?我目前已经解决了这个问题,方法是创建一个元组,其中函数作为第一项,变量作为第二项的嵌套元组,然后调用:

menu_input[KEY_D] = action_system.drop_item, (character,))
...LATER IN CODE...
for key in current_input:
  if key in menu.menu_input.keys():
    func, args = menu.menu_input[keys]
    func(*args)
Run Code Online (Sandbox Code Playgroud)

但我真的更希望能够将函数及其变量存储在一起。

我希望能够存储:

menu_input[KEY_D] = action_system.drop_item(character)
...LATER IN CODE...
for key in current_input:
  if key in menu.menu_input.keys():
    menu.menu_input[keys]()
Run Code Online (Sandbox Code Playgroud)

因为处理菜单输入的函数不理解或不关心菜单函数本身,所以它真的不需要看到输入或关心传递的参数。

这可能吗?如果是这样,我错过了什么?对不起,如果这很明显或显然是个坏主意——对python来说相对较新。如果这是一个糟糕的主意,我很想知道为什么。我避免将它作为菜单项的类函数,因为我试图在实体-组件-系统模型中工作,其中组件存储所有数据,系统对它们进行操作。

blh*_*ing 5

functools.partial功能是为此目的而设计的:

from functools import partial
menu_input[KEY_D] = partial(action_system.drop_item, character)
...
for key in current_input:
    if key in menu.menu_input:
        menu.menu_input[key]()
Run Code Online (Sandbox Code Playgroud)