zoukankan      html  css  js  c++  java
  • 返回函数

    高阶函数不但能够接收函数作为参数,也能够将函数作为结果值返回。

    def lazy_sum(*args):
        def calc_sum():
            ax = 0
            for n in args:
                ax = ax + n
            return ax
        return calc_sum
    
    
    f = lazy_sum(1,2,3)       #调用lazy_sum时返回的是calc_sum函数名,不会直接返回结果。
    a = f()
    
    print(a)
    

    调用lazy_sum函数,每次调用都会返回一个新的函数,调用的结果互不影响。

    f = lazy_sum(1,2,3,4)
    j = lazy_sum(1,2,3,4)
    
    
    if f == j:
        print(True)
    else:
        print(False)     #返回False
    

    返回的函数引用的变量i并不会立即执行,等到三个函数都返回时,i已经变成了3。

    返回闭包时牢记一点:返回函数不要引用任何循环变量,或者后续会发生变化的变量。

    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())          #返回的结果是 9,9,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
    
    f1, f2, f3 = count()
    print(f1(),f2(),f3())     #返回的结果是1,4,9
    

    上述函数可用匿名函数lambda缩短代码量。 

     

     

      

  • 相关阅读:
    ORM中的事务和锁
    双下划线跨表查询 聚集查询 分组查询 FQ查询
    cookie和session
    多表查询
    单表查询
    ORM
    Djangon之模板
    Django之视图函数
    Django之URL路由系统
    web框架的本质及自定义web框架
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/8572535.html
Copyright © 2011-2022 走看看