美文网首页ITS·黑客
Python学习笔记(八)返回函数

Python学习笔记(八)返回函数

作者: 木凛 | 来源:发表于2017-04-12 14:04 被阅读0次

    1)函数作为返回值,调用函数f时,才真正计算求和的结果:f()

    2)请再注意一点,当我们调用lazy_sum()时,每次调用都会返回一个新的函数,即使传入相同的参数:

    >>> f1 = lazy_sum(1, 3, 5, 7, 9)

    >>> f2 = lazy_sum(1, 3, 5, 7, 9)

    >>> f1==f2

    False

    f1()和f2()的调用结果互不影响。

    3)返回闭包时牢记的一点就是:返回函数不要引用任何循环变量,或者后续会发生变化的变量。——解决方法是再创建一个函数,用该函数的参数绑定循环变量当前的值,无论该循环变量后续如何更改,已绑定到函数参数的值不变

    举例


    def count():

        fs = []

        for i in range(1, 4):

            def f():

                return i*i

            fs.append(f)  #注意到这里f是作为一个函数加入的

        return fs

    f1, f2, f3 = count()


    >>> f1()

    9

    >>> f2()

    9

    >>> f3()

    9

    后:将变量和函数绑定

    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

    fs.append(f(i))传入的f(i)会首先被进行函数计算,然后f(i)的返回值,也就是函数g作为fs.append()的参数传入,所以最终传入的参数是函数g,仍是一个函数。最终fs.append()接收到的参数是f(i)的返回值


    >>> f1, f2, f3 = count()

    >>> f1()

    1

    >>> f2()

    4

    >>> f3()

    9

    相关文章

      网友评论

        本文标题:Python学习笔记(八)返回函数

        本文链接:https://www.haomeiwen.com/subject/mwrmattx.html