是否可以创建一个可以单独访问它们的功能列表?例如:
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
答案 0 :(得分:7)
问题在于您在开始时调用函数并仅将它们的值存储在列表中。
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
答案 1 :(得分:4)
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
答案 2 :(得分:0)
作为示例:您可以将代码更改为
l=[a,b,c]
l[2]()
print e
l[0]()
print e
它会做你期望的。如果声明函数列表,请不要添加括号。而是把它们放在你调用函数的地方。