Discuss / Python / python 3.5 无法运行例子程序,

python 3.5 无法运行例子程序,

Topic source

def count(): fs = [] for x in range(1,4): def f(): return x*x

fs.append(f)
return fs

f1,f2,f3 = count()

for x in f1(): print(x) for x in f2(): print(x) for x in f3(): print(x) 这段代码在python3.5中无法运行,错误提示为: Traceback (most recent call last): File "D:/PythonPro/lianxi/lianxi.py", line 12, in <module> f1,f2,f3 = count() ValueError: not enough values to unpack (expected 3, got 1)。而且廖老师我也不明白 fs.append(f) return fs 这里fs是列表,f是一个指向函数的变量,那么fs中就多了一个变量f。f1,f2,f3不都是这个列表嘛?为什么交互输出的时候直接f1()就可以得到值呢?列表不是需要取出其中的元素然后加上()才是这个函数的值么! 我这里是用循环print值得 不知道这样做对不对。 改进版的那个我这里运行也不对,虽然没有语法错误,但是输出f1()的值得时候出错!

def count(): def f(j): def g(): return j*j return g fs = [] for i in range(1, 4): fs.append(f(i)) # f(i)立刻被执行,因此i的当前值被传入f() return fs

这里改成:

def count(): def f(j): return j*j fs = [] for i in range(1, 4): fs.append(f(i)) # f(i)立刻被执行,因此i的当前值被传入f() return fs 这样应该也可以吧,因为函数f()已经不再循环里了,我觉得没必要用两层循环吧!


  • 1

Reply