如何将函数放入 Python 的列表中?

How do I put functions in a list in Python?

我想在 Python 中使用 switch 语句,但由于 python 中没有 switch 语句,我想使用函数列表。但是,当我定义列表时,函数被执行了。

这是我的代码:

shapes = [drawSquare(), drawRectangle(), myTurtle.circle(10), drawTriangle(), drawStar()]

这是使用 turtle 的输出:

如何在没有 python 运行 函数的情况下定义函数列表?

去掉括号()

例如:

shapes = [drawSquare, drawRectangle, myTurtle.circle, drawTriangle, drawStar]

演示:

def add(a,b):
    return a + b

def sub(a,b):
    return a - b

lst = [add, sub]
for i in lst:
    print(i(3,2))

通过在调用函数的函数名称后添加 ()。要获得可调用函数的列表,只需将示例更改为:

shapes = [drawSquare, drawRectangle, myTurtle.circle, drawTriangle, drawStar]

并调用其中一种形状 shapes[pos](args) 例如根据您的示例绘制圆圈:shapes[2](10)(对于那些不知道列表位置从 0 开始的人)。

您需要传递对列表中函数 (drawSquare) 的引用,而不是函数 (drawSquare()) 的引用,因为您不希望函数恰好在它调用的那一刻被调用已宣布。

shapes = [drawSquare, drawRectangle, myTurtle.circle, drawTriangle, drawStar]

您稍后可以使用

调用函数

[i(10) for i in shapes]

或者,如果您想为每个函数提供不同的参数,您可以使用 for 循环。