函数的冒泡排序:
本质是,让元素换位置,逐个比较最终排序。
例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中执行,然后再执行下面的