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()

根据我的理解,f1,f2,f3分别作为count这个函数三次调用f所创造的返回函数,那怎样才能获得count这个函数本身的返回值——fs这个list呢?

如果直接调用count()会出现下面的情况: [< function count.<locals>.f at 0x05A4F390>, < function count.<locals>.f at 0x05A4F348>, < function count.<locals>.f at 0x05A4F150>]

尝试多次均无果,想请教下各位朋友,如何获取fs?

纳兰一笔

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

请问一下,fs这个list里面的组成是不是几个函数???f1,f2,f3是分别调取fs里面的函数吗??

count()调用之后返回的是一个元素为函数的列表,所以count这个函数本身的返回值就是那些函数对象,也就是f1是count函数列表里的第一个元素,f2是第二个,以此类推。 也可以把f1,f2,f3 = count()替换为f = count(),调用时这样写:f0,f1,f2这样就等价于前面的调用f1(),f2(),f3()。 如果实在是不理解还可以在f()函数里,在returni*i 前面和fs。append()前面加上print(i)就知道这个是怎么运行的了


  • 1

Reply