Discuss / Python / 可以这样理解吗

可以这样理解吗

Topic source

翁岚敏

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

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

f1,f2,f3 = count()

print(f1()) print(f2()) print(f3())

因为f1()和f2()还有f3()都返回i*i 又因为i已经变成了3 所以三个函数答应你出来都是9
而f1 和f2还有f3 指的是三个不同的函数 地址是不同的 可以理解成被赋值相同常量的不同变量

def count(): fs = [] def f(n): def j(): return n*n return j() for i in range(1,4): fs.append(f(i)) return fs f1,f2,f3 =count()

print(f1()) print(f2()) print(f3())

而在这里 f(n)是只是一个函数,无论他被赋予什么参数n,又因为f(n)的返回值是一个函数 所以f(n)()在不同n的情况下是不同的函数,返回的数也不同 所以f1(),f2(),f3()的值不同


  • 1

Reply