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
  • 相关阅读:
    poj 3666 Making the Grade
    poj 3186 Treats for the Cows (区间dp)
    hdu 1074 Doing Homework(状压)
    CodeForces 489C Given Length and Sum of Digits...
    CodeForces 163A Substring and Subsequence
    CodeForces 366C Dima and Salad
    CodeForces 180C Letter
    CodeForces
    hdu 2859 Phalanx
    socket接收大数据流
  • 原文地址:https://www.cnblogs.com/lighthouse/p/9367113.html
Copyright © 2011-2022 走看看