def func():
fs = [ ]
for i in range(1,4):
def f():
return i * i
fs.append(f)
return fs
f1 = func()
print(f1)
运行结果是:
[<function func.<locals>.f at 0x01AD83D0>, <function func.<locals>.f at 0x01AD8388>, <function func.<locals>.f at 0x01AD84A8>]
[Finished in 0.2s]
再次打印一遍,稍加改动
def func():
fs = [ ]
for i in range(1,4):
def f():
return i * i
fs.append(f)
return fs
f1,f2,f3 = func()
print(f1(),f2(),f3())
运行结果是:9 9 9
[Finished in 0.3s]
为什么有如此不同?
我的问题是:1.为什么第二次代码里面,最后输出f1,f2,f3的时候,后面都加了括号? print(f1(),f2(),f3())
2.如果在第一次代码里面,最后输出print(f1)仿照第二次代码那样写成print ( f1() ) 就反而会报错?
3.第二次代码运行结果是 9 9 9 不懂为什么不是