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
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
如果分别
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,所以不能加个括号像方法一样直接调用。count返回的是数值,count1返回的是函数引用。报错说得很明显,数值int是没办法调用的