Discuss / Python / 请各位帮忙解答一下这个问题,困扰了好久

请各位帮忙解答一下这个问题,困扰了好久

Topic source

SherryMaoMAO

#1 Created at ... [Delete] [Delete and Lock User]
输入以下代码并运行,会出现这样的错误:
Traceback (most recent call last):
  File "D:\work\2019.py", line 9, in <module>
    print(a1(), a2(), a3())
TypeError: 'int' object is not callable
def count():
    fs = []
    for i in range(1, 4):
        def func(i):
            return i * i
        fs.append(func(i))
    return fs
a1, a2, a3 = count()
print(a1(), a2(), a3())
修改代码为:
def count():
    fs = []
    for i in range(1, 4):
        def func(i):
            return i * i
        fs.append(func(i))
    return fs
a1, a2, a3 = count()
print(a1, a2, a3)
# 输出结果是:
# 1
# 3
# 9

请问第一段代码为什么会出现错误,调用函数难道不是加()吗,为什么不加括号的反倒可以调用?希望各位大神帮解答一下,谢谢

 fs.append(func(i))

主要原因在于你这行代码,返回函数的时候是返回下面这种

 fs.append(func)

你之前写的相当于把执行的结果放到列表,而不是把函数放到列表

浪子卤蛋

#3 Created at ... [Delete] [Delete and Lock User]

那为什么不是fs.append(func())这样的写法呢,函数不应该是func()这样表达吗?

a1,a2,a3是三个int型变量啊,怎么能当函数去调


  • 1

Reply