Discuss / Python / 关于count()返回的结果

关于count()返回的结果

Topic source

梦炸

#1 Created at ... [Delete] [Delete and Lock User]
在此插入代码
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

>>> f1, f2, f3 = count()
>>> f1()
1
>>> f2()
4
>>> f3()
9

刚开始以为count()返回的是一个函数的列表[f(1),f(2),f(3)],所以 f1=f(1) f2=f(2) f3=f(3) 调用的时候怎么不直接是

f1 f2 f3 这样调用呢,后来想明白了。f(1),f(2),f(3)这几个函数返回值也只是个函数名,调用时也应该是>>>f(1)() 所以调用的时候>>>f1()

明明是append到[]里面了,为什么不是list啊,我想不明白,如果不是list那append到list里面这一步骤有什么用啊

我理解的是返回就是一个list,list是为了分别保存1,2,3作为参数对应的函数。

>>> 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
...

可以看到:

>>> type(count())
<type 'list'>

>>> count()
[<function g at 0x10679b848>, <function g at 0x10679b8c0>, <function g at 0x10679b668>]

>>> count()[1]
<function g at 0x10679b9b0>
>>> count()[1]()
4


>>> a=count()
>>> a
[<function g at 0x10679b8c0>, <function g at 0x10679b938>, <function g at 0x10679b9b0>]

  • 1

Reply