是否可以创建一个可以单独访问它们的功能列表?例如:
e=0
def a():
global e
e=1
def b():
global e
e=2
def c():
global e
e=3
l=[a(),b(),c()]
l[2]
print e
l[0]
print e
输出:
>>>3
>>>1
问题是你在开始时调用你的函数并且只将它们的值存储在列表中。
e=0
def a():
global e
e=1
def b():
global e
e=2
def c():
global e
e=3
l=[a,b,c]
l[2]()
print e
l[0]()
print e
输出
>>>
3
1
l=[a(),b(),c()]
不是函数列表,而是调用这些函数返回的值的集合。在列表中,项目从左到右进行评估,因此e
在此步骤之后将是 3。
由于函数是 python 中的对象,因此您可以执行以下操作:
>>> l = [a, b, c] # creates new references to the functions objects
# l[0] points to a, l[1] points to b...
>>> l[0]()
>>> e
1
>>> l[2]()
>>> e
3
>>> l[1]()
>>> e
2
例如:您可以将代码更改为
l=[a,b,c]
l[2]()
print e
l[0]()
print e
它会做你所期望的。如果您声明函数列表,请不要添加括号。而是将它们放在调用函数的位置。