zoukankan      html  css  js  c++  java
  • 二十、冒泡算法,递归,装饰器

    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

  • 相关阅读:
    中文转拼音 (utf8版,gbk转utf8也可用)
    会不会死循环
    图片放大缩小的zoom.js
    Getting unknown property: commonmodelsTeacher::auth_Key
    Yii-admin 权限菜单配置
    wordpress 后台富文本编辑器,添加图片发现无法左对齐,样式出现混乱
    windows 命令
    Yii2 获取URL的一些方法
    PHP 直接使用html输出excel
    json JSON_UNESCAPED_UNICODE 防止中文乱码
  • 原文地址:https://www.cnblogs.com/chushujin/p/9382137.html
Copyright © 2011-2022 走看看