【发布时间】:2017-02-06 04:18:17
【问题描述】:
我的问题在这里是这样的,但我不明白。
How to add a function call to a list?
如果我有大约 10 个命令,并且它们都用于特定目的,因此无法修改它们,但我想将它们放在一个列表中而不调用它们。
def print_hello():
print("hello")
command_list=[print_hello()]
这只会打印"hello",然后让command_list 等于[None]
我如何得到它,以便当我输入command_list[0] 时,它会执行print_hello()?
【问题讨论】:
-
“我怎样才能得到它,以便当我输入 command_list[0] 时,它会执行 print_hello()?” – 几乎没有。
command_list[0]()会这样做吗? -
command_list=[print_hello] -
要通过索引调用结果对象进行访问,您必须编写自己的自定义列表以使
__getitem__调用__call__。或者就像@deceze 建议的那样,将函数放在列表中并在你取回它时调用它。 -
print_hello() 是函数调用,而 print_hello wo () 是函数对象。您想将函数对象存储到列表中,因此您需要将其附加到不带 () 的列表中。此外,您希望对存储的函数对象进行函数调用,这就是为什么您需要在列表项 command_list[0]() 之后附加 ()
-
是的,
command_list[0]()会做得很好。抱歉措辞糟糕