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

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


    #等到i = 3 了,才return fs统一返回f函数的3个对象赋值给 f1,f2,f3,此时f1 f2 f3 调用的时候i 都等于3了, print(f1()) 的时候 只执行了 return i*i
    #所以f1(),f2(),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
    f1,f2,f3 = count()
    print(f1())

    #带入了参数i,i的值被记录下来了,f1对应的是fs.append(f(1)),f2对应的是fs.append(f(2)),f3对应的是fs.append(f(3))
    #所以f1(),f2(),f3()值分别是1,4,9

    ---------------------------------------------
    result = [lambda x: x + i for i in range(10)]
    print(result[0](10))  #打印19
    print(result[9](10))  #打印19

    与下面的函数一样

    def count():
    fs = []
    for i in range(0, 10):      #变量i等到count()函数执行完了才会释放,f(x)函数属于count()函数内的,所以要等f(x)函数执行完,整个count()函数执行完,变量i才能释放;所以f(x)函数能调用到变量i;
    def f(x):
           # print (i)    #f调用的时候都是9
    return i+x
    fs.append(f)    #f调用i的时候,f在内存中找i,i在内存地址中为9;
    return fs

    # f1, f2, f3,f4,f5,f6,f7,f8,f9,f10 = count()
    a = count()
    print(a) #存放f函数地址的列表
    print(a[0](10))  #打印19
    print(a[9](10))  #打印19
    ---------------------------------------------
    for i in range(0, 10):
    def f():
    return i+1
    print(i) #打印9

    参考:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431835236741e42daf5af6514f1a8917b8aaadff31bf000

    https://www.cnblogs.com/JohnABC/p/4076855.html
  • 相关阅读:
    Linux学习笔记(6)磁盘分区(LVM)
    Linux学习笔记(5)磁盘分区(parted)
    sql server升级打补丁
    sql server中index的REBUILD和REORGANIZE的区别及工作方式
    【sql server邮件】sql server如何把查询结果发邮件出去
    学习系列
    EasySQLMAIL使用实践系列
    利用EasySQLMAIL实现自动填写Excel表格并发送邮件(2)
    需求分析Point
    实现Word的列表样式
  • 原文地址:https://www.cnblogs.com/lighthouse/p/9367113.html
Copyright © 2011-2022 走看看