【问题标题】:How to create a list of functions for call in python如何在python中创建用于调用的函数列表
【发布时间】: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]() 会做得很好。抱歉措辞糟糕

标签: python list


【解决方案1】:

如果您想在不调用它们的情况下将其添加到列表中,请不要调用它们:

command_list=[print_hello]

在你想打电话给他们的时候,打电话给他们:

command_list[0]()

如果你想通过 command_list[0] 来实现某些事情,你可以继承 list 并给它一个

def __getitem__(self, index):
    item = list.__getitem__(self, index)
    return item()

(未经测试)。然后列表上的项目获取操作会导致函数被调用。

【讨论】:

    猜你喜欢
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2020-01-12
    • 1970-01-01
    • 1970-01-01
    • 2023-01-07
    • 1970-01-01
    相关资源
    最近更新 更多