Python函数的冒泡排序、递归以及装饰器
时间:2022-04-22
本文章向大家介绍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中执行,然后再执行下面的
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- django-表单之创建表单(一)
- 原来sqlite3_get_table() 是这样抓取数据的!!!
- 【tensorflow2.0】中阶api--模型、损失函数、优化器、数据管道、特征列等
- 最短路径Dijkstra算法的简单实现
- django-表单之获取表单信息(二)
- 【tensorflow2.0】高阶api--主要为tf.keras.models提供的模型的类接口
- django-表单之模型表单(三)
- sqlite3数据库封装 - 动态链接库
- 【tensorflow2.0】张量的结构操作
- 指针*和引用&的区别使用
- django-表单之手动渲染(五)
- django-表单之模型表单渲染(六)
- 【tensorflow2.0】张量的数学运算
- django-表单之数据保存(七)
- 用C++跟你聊聊“中介者模式”