不理解数列fs怎么成分开元素?
返回的fs是一个数列,但试了下可以用一个变量接收,也可以用和数列相同元素量的变量接收。如下:
list=[1,2,3,4]
c=list
print(c)>>>[1, 2, 3, 4]
d1,d2,d3,d4=list
print(d1,d2,d3,d4)>>>1 2 3 4
返回的是fs=[ f() , f() , f() ] ,也可以用 f1,12,f3 接收。
这是python的拆包功能,对于list 和 tuple都可以这样拆包,可以百度‘python 拆包’
python 闭包 在循环中定义函数,函数变量会直接引用循环变量(下面函数使用:def f(j): 和 def f(j=i): 都能正常执行,为什么j 默认会等于i 呢?)
def count():
fs=[]
for i in range(1,4):
#print('i=',i)
#def f(j):
def f(j=i):
#print('j',j)
def g():
return j*j
return g
r=f(i)
fs.append(r)
return fs
f1,f2,f3=count()
print(f1(),f2(),f3())
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,f2,f3)
f4=count()
print(f4)
def count():
fs = []
for i in range(1, 4):
def f(j=i):
return j*j
fs.append(f)
return fs
f1, f2, f3 = count()
#print(f1,f2,f3)
print(f1(),f2(),f3())
def count():
fs=[]
for i in range(1,4):
print('i=',i)
#def f(j):
def f(j=i):
print('j',j)
def g():
return j*j
return g
r=f(i)
fs.append(r)
return fs
f1,f2,f3=count()
print(f1(),f2(),f3())