def count():
fs = []
for i in range(1, 4):
def f(j):
return j*j
r=f(i)
fs.append(r)
return fs
这里定义了一个函数count()
def count1():
fs = []
for i in range(1, 4):
def f(j):
def g():
return j*j
return g
r=f(i)
fs.append(r)
return fs
这里定义了一个count1()
这两个函数有区别么?
我在调用的时候发现count()和count1()结果一样,但是
f1, f2, f3 = count()
print f1(), f2(), f3()
通过这样调用的话count1()正常 count()却报错是为什么
Traceback (most recent call last):
File "C:/Users/amos/PycharmProjects/untitled/1.py", line 10, in <module>
print f1(), f2(), f3()
TypeError: 'int' object is not callable
如果分别
print
两个函数,它们的结果是不一样的:count()
返回的是一个带有3
个数字的list
,也就是函数中fs
这个对象里append
了3
个数字。而
count1()
则是3
个函数。为什么?
注意你的
count1()
里有一句return g
,它直接return
了g
这个函数对象本身,而不是g
的执行结果。把
return g
改成return g()
,则count1()
的返回结果就和count()
一样了。至于你报错的问题,按照我上面说的改后,
count1()
也同样会报错,因为你的f1
,f2
,f3
获取的三个结果都是int
,所以不能加个括号像方法一样直接调用。