Python函数的冒泡排序递归以及装饰器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python函数的冒泡排序递归以及装饰器相关的知识,希望对你有一定的参考价值。
函数的冒泡排序:
本质是,让元素换位置,逐个比较最终排序。
例1:实现a1,a2值互换:
a1 = 123 a2 = 456 temp = a1 a1 = a2 a2 = temp print(a1) print(a2) 结果: 456 123
冒泡排序:
#!/bin/bash/env python # -*- coding:utf-8 -*- li = [22,1,5,4,3,66,22,12,34,21] for j in range(1,len(li)): for i in range(len(li)-1): if li[i] > li[i+1]: temp = li[i] li[i] = li[i+1] li[i+1] = temp print(li) 结果: [1, 3, 4, 5, 12, 21, 22, 22, 34, 66]
递归:
在函数内部可以调用其他函数。如果一个函数在内部调用自己,这个函数就是递归函数。
例:
#!/bin/bash/env python def f4(a1,a2): if a1 > 10000: return print(a1) a3 = a1 + a2 f4(a2,a3) f4(0,1) 结果: 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
函数装饰器:
装饰器的目的:当要修改一段代码时,而不进行内部的修改,这就需要在外部加装饰器来达到效果。
原函数执行之前进行的操作:
#!/bin/bash/env python def outer(func): def inner(): print(‘hello‘) print(‘let is‘) print(‘moumou‘) r = func() return r return inner @outer def func1(): print(‘yes‘) func1() 结果: hello let is moumou yes
函数执行之后进行操作:
def outer(func): def inner(): r = func() print(‘hello‘) print(‘let is‘) print(‘moumou‘) return r return inner @outer def func1(): print(‘yes‘) func1() 结果: yes hello let is moumou
@的功能:先执行outer函数,然后把发f1当做参数传给oute。, 将outer的返回值重新赋值给f1,所以f1的函数就等于inner()
只要函数应用装饰器,那么函数就被重新定义,重新定义为:装饰器的内层函数。
多个参数装饰器传递:
#!/bin/bash/env python def outer(func): def inner(*args,**kwargs): print(args) print(kwargs) ret = func(*args,**kwargs) return ret return inner @outer def func1(a1,a2,a3): print("yes") return a1 + a2 +a3 func1(11,22,33) 结果: (11, 22, 33) {} yes
多个装饰器的应用:
#!/bin/bash/env python def outer(func): def inner(*args,**kwargs): print(‘cai‘) ret = func(*args,**kwargs) print(‘rui‘) return ret return inner def outer1(func): def inner1(*args,**kwargs): print(‘123‘) ret = func(*args,**kwargs) return ret return inner1 @outer1 @outer def func1(a1,a2,a3): print("yes") func1(11,22,33) 结果: 123 cai yes rui
分析:
先把outer和func1看做一个整体,把inner放在outer1中执行,然后再执行下面的
以上是关于Python函数的冒泡排序递归以及装饰器的主要内容,如果未能解决你的问题,请参考以下文章