• 二十、冒泡算法,递归,装饰器


    1.冒泡算法

    l1=[33,2,10,1,565,23,333,898,4,21,65,45,75,33,11,77,333]
    for j in range(1,len(l1)):
    #print (j)
    for i in range(len(l1) - j):

    if l1[i] > l1[i + 1]:
    temp = l1[i]
    l1[i] = l1[i + 1]
    l1[i + 1] = temp
    print(l1)
    ---------------------------
    [1, 2, 4, 10, 11, 21, 23, 33, 33, 45, 65, 75, 77, 333, 333, 565, 898]
    -------------------------------------------------------------------------------------------
    2.递归
    #获取斐波那契数列第10个数
    def f5(depth,a1,a2):
    #print (depth)
    if depth == 10:
    return a1
    a3=a1+a2
    r=f5(depth+1,a2,a3)
    return r
    m=f5(1,0,1)
    print (m)
    -------------------------------------------------------------------------------------------
    3.装饰器:为了不改变原函数的情况下,在执行该函数之前或者之后执行一些东西
      只要函数应用装饰器,那么函数就被重新定义,重新定义为装饰器内容函数
    def outer(func):
    #func=f1()
    def inner():

    print ("hello")
    print("hello")
    print("hello")
    #执行旧的f1函数,r为None
    r=func()
    print("end")
    print("end")
    print("end")
    return r
    return inner
    #f1新=inner()
    @outer
    '''
    1.到@时,执行outer函数,并且将下面的函数名当做参数
    2.将outer的返回值重新赋值给f1,f1=outer的返回值
    '''
    def f1():
    print ("F1")
    def f2():
    print ("F2")
    def f3():
    print ("F3")
    def f4():
    print ("F4")

    f1()
    ------------------------------------------------

       hello
       hello
       hello
       F1
       end
       end
       end

    ------------------------------------------------------------------------------------------------------------

    如果加上一个参数

    def outer(func):
    #func=f1()
    def inner(x,y):

    print ("hello")
    print("hello")
    print("hello")
    #执行旧的f1函数,r为None
    r=func(x,y)
    print("end")
    print("end")
    print("end")
    return r
    return inner
    #f1新=inner()

    '''
    1.到@时,执行outer函数,并且将下面的函数名当做参数
    2.将outer的返回值重新赋值给f1,f1=outer的返回值
    '''
    @outer
    def f1(a1,a2):
    print ("F1")
    return a1+a2
    def f2():
    print ("F2")
    def f3():
    print ("F3")
    def f4():
    print ("F4")
    f1(1,2)
    ---------------------------------------

       hello
       hello
       hello
       F1
       end
       end
       end

    ------------------------------------------------------------------------------------------------------------

    如果加上多个参数,每个函数参数不一样,万能装饰器

    def outer(func):
    #func=f1()
    def inner(*x,**y):

    print ("hello")
    print("hello")
    print("hello")
    #执行旧的f1函数,r为None
    r=func(*x,**y)
    print("end")
    print("end")
    print("end")
    return r
    return inner
    #f1新=inner()

    '''
    1.到@时,执行outer函数,并且将下面的函数名当做参数
    2.将outer的返回值重新赋值给f1,f1=outer的返回值
    '''
    @outer
    def f1(a1,a2):
    print ("F1")
    return a1+a2
    @outer
    def f2(a):
    print ("F2")
    @outer
    def f3(a,b,c):
    print ("F3")
    def f4():
    print ("F4")
    # f5=outer(f1)
    # print (f5)
    # result=f5()
    # print (result)
    f1(1,2)
    f2(1)
    f3(1,1,1)
    ------------------------------------

       hello
       hello
       hello
       F1
       end
       end
       end
       hello
       hello
       hello
       F2
       end
       end
       end
       hello
       hello
       hello
       F3
       end
       end
       end

    ------------------------------------------------------------------------------------------------------------

    多个装饰器修饰一个函数:

    def outer(func):
    #func=f1()
    def inner(*x,**y):
    print ("123")
    #执行旧的f1函数,r为None
    r=func(*x,**y)
    print("456")
    return r
    return inner
    #f1新=inner()
    def outer_a(func):
    #func=f1()
    def inner(*x,**y):
    print ("666")
    #执行旧的f1函数,r为None
    r=func(*x,**y)
    print("888")
    return r
    return inner

    '''
    1.到@时,执行outer函数,并且将下面的函数名当做参数
    2.将outer的返回值重新赋值给f1,f1=outer的返回值
    '''
    @outer_a
    @outer
    def f1(a1,a2):
    print ("F1")
    return a1+a2
    #@outer
    def f2(a):
    print ("F2")
    #@outer
    def f3(a,b,c):
    print ("F3")
    def f4():
    print ("F4")
    f1(1,2)
    -----------------------------------------

       666
       123
       F1
       456
       888

  • 相关阅读:
    RIO包 健壮的I/O函数代码
    Upgrading WebLogic Application Environments --官方文档
    JAVA的静态代理与动态代理比较--转载
    指向函数的指针--转
    c之指针与数组(1)
    weblogic 异常常见处理方法
    Redis: under the hood---转载
    A GDB Tutorial with Examples--转
    The best career advice I’ve received --转载
    redis 大数据插入
  • 原文地址:https://www.cnblogs.com/chushujin/p/9382137.html
Copyright © 2020-2023  润新知