python装饰器功能是冒泡排序怎么做_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中执行,然后再执行下面的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值