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
4

3 回答 3

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
于 2013-06-11T04:09:19.770 回答
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
于 2013-06-11T04:11:39.703 回答
0

例如:您可以将代码更改为

l=[a,b,c]

l[2]()
print e
l[0]()
print e

它会做你所期望的。如果您声明函数列表,请不要添加括号。而是将它们放在调用函数的位置。

于 2013-06-11T04:09:53.057 回答