Python函数列表

时间:2013-06-11 04:07:59

标签: python list

是否可以创建一个可以单独访问它们的功能列表?例如:

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

3 个答案:

答案 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

它会做你期望的。如果声明函数列表,请不要添加括号。而是把它们放在你调用函数的地方。