1、冒泡排序

  关于冒泡排序实现大小比较,大索引会向后移动,这次循环将最大数值直接移动至最后。

li = [,,,,]
for i in range(len(li)-):
if li[i] > li[i+]:
temp = li[i]
li[i] = li[i + ]
li[i + ] = temp
print(li)
[, , , ]

冒泡排序以函数的方式完整的实现方法


def my_min(a):
c = len(a)
while c > 1:
for i in range(len(a) - 1):
if a[i] > a[i + 1]:
temp = a[i]
a[i] = a[i + 1]
a[i + 1] = temp
c -= 1
print(a)
b = [23,25,12,14,4,]
my_min(b)
[4, 12, 14, 23, 25]

2、递归

  斐波那契数列根据递归的方法实现方式,因为无线循环的递归会报错,这里我们做个限制

def f1(a1,a2):
if a1 >1000:
return
print(a1)
a3 = a1 + a2
f1(a2,a3)
f1(0,1)
0
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987

  以递归的方式获取菲波那切数列第十个数字的代码实现方式

def f5(de,a1,a2):
if de == 10:
return a1
a3 = a1 +a2
r = f5(de + 1,a2,a3)
return r
print(f5(1,0,1))
34

3、装饰器,用于装饰某个方法、函数,对象或者类

  下边我们给一个简单的函数加一个简单的装饰器

def out(func):
def inner():
print("hello")
r = func()
return r
return inner
@out
def f1():
print("f1")
f1() hello
f1

  @符号在这里有特殊的含义,@函数名,会执行该函数,并且会将这行下边的函数名当做参数传入该函数,并将out的返回值重新赋值给f1

  双参数的装饰器写法

def out(func):
def inner(a,b):
print("hello")
r = func(a,b)
return r
return inner
@out
def f1(a,b):
print("f1")
print(a + b)
f1(1,2) hello
f1
3

  函数含有多个参数的装饰器的写法

def out(func):
def inner(*arg,**kwargs):
print("hello")
r = func(*arg,**kwargs)
return r
return inner
@out
def f1(a,b):
print("f1")
print(a + b)
f1(1,2) hello
f1
3

  多个装饰器装饰一个函数的写法

def out(func):
def inner(*arg,**kwargs):
print("hello")
r = func(*arg,**kwargs)
return r
return inner
def out1(func):
def inner(*arg,**kwargs):
print("heh")
r = func(*arg,**kwargs)
return r
return inner
@out
@out1
def f1(a,b):
print("f1")
print(a + b)
f1(1,2) hello
heh
f1
3

python基础之基本算法和装饰器的更多相关文章

  1. Python菜鸟之路:Python基础-逼格提升利器:装饰器Decorator

    一.装饰器 装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等. 装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身 ...

  2. Python-Day4 Python基础进阶之生成器/迭代器/装饰器/Json & pickle 数据序列化

    一.生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面 ...

  3. python 基础篇 11 函数进阶----装饰器

    11. 前⽅⾼能-装饰器初识本节主要内容:1. 函数名的运⽤, 第⼀类对象2. 闭包3. 装饰器初识 一:函数名的运用: 函数名是一个变量,但他是一个特殊变量,加上括号可以执行函数. ⼆. 闭包什么是 ...

  4. python基础之闭包函数和装饰器

    补充:全局变量声明及局部变量引用 python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量 global关键字用来在函数或其 ...

  5. Python基础2:反射、装饰器、JSON,接口

    一.反射 最近接触到python的反射机制,遂记录下来已巩固.但是,笔者也是粗略的使用了__import__, getattr()函数而已.目前,笔者的理解是,反射可以使用户通过自定义输入来导入响应的 ...

  6. Python基础(7)闭包函数、装饰器

    一.闭包函数 闭包函数:1.函数内部定义函数,成为内部函数, 2.改内部函数包含对外部作用域,而不是对全局作用域名字的引用 那么该内部函数成为闭包函数 #最简单的无参闭包函数 def func1() ...

  7. python基础编程: 函数示例、装饰器、模块、内置函数

    目录: 函数示例 装饰器 模块 内置函数 一.函数示例: 1.为什么使用函数之模块化程序设计: 不使用模块程序设计的缺点: 1.体系结构不清晰,可主读性差: 2.可扩展性差: 3.程序冗长: 2.定义 ...

  8. Python基础(闭包函数、装饰器、模块和包)

    闭包函数 格式: def 函数名1(): def 函数名2(): 变量 = 值 return 变量 return 函数名2 func = 函数名1() key = func()

  9. python基础补漏-05-生成器和装饰器

    [1]生成器 很难用简单的语言描述生成器. 生成器:从字面上来理解,就是以某种规则为基础,不断的生成数据的工具 生成器函数: 在函数中如果出现了yield关键字,那么该函数就不再是普通函数,而是生成器 ...

随机推荐

  1. 调整win7 Windows7下时间同步的频率时 钟同步间隔

    今天发现时间不对,同步时间后看到Windows系统默认是一周才同步一次时间,频率太低了.查找了一下资料,找到了两种调整Win7时间同步频率的方法. 方法一:注册表法 这种方法是通过修改注册表中的键值来 ...

  2. SAP的运输功能(转)

    SAP的运输功能(transportation)  transportation大体有三个作用: 1.运输计划transportation planning 概念:对outbound delivery ...

  3. js类(继承)(一)

    //call() //调用一个对象的一个方法,以另一个对象替换当前对象. //call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) //参数 //thisObj / ...

  4. SupportV7包中 SwipeRefreshLayout 修改下拉控件的距离

    //修改下拉距离 ViewTreeObserver vto = mCategoryResults.mSwipeRefreshLayout.getViewTreeObserver(); vto.addO ...

  5. js map

    // js通用方法 // map对象定义 function Map() { var struct = function(key, value) { this.key = key; this.value ...

  6. mysql提示:Illegal mix of collations for operation ‘UNION’

    http://www.111cn.net/database/mysql/56096.htm show variables like "%char%"; show variables ...

  7. [Math] Beating the binary search algorithm – interpolation search, galloping search

    From: http://blog.jobbole.com/73517/ 二分检索是查找有序数组最简单然而最有效的算法之一.现在的问题是,更复杂的算法能不能做的更好?我们先看一下其他方法. 有些情况下 ...

  8. FUNCS.H中的函数声明

    /***************************************************************************                         ...

  9. Travis-CI与Latex构建开源中文PDF

    博主有一本开源书籍,用 latex 排版,托管在Github上.但用 latex 不像是 Markdown,当tex文本更新时,用于最终浏览的PDF文件很难得到及时的更新, 所以博主一直想找到一套工具 ...

  10. Sprint回顾-0525

    1.回顾组织 主题:“我们下次怎么样才能更加认真对待?” 时间:设定为1小时. 参与者:整个团队. 场所:宿舍走廊. 秘书:团队队长秘书,筹备.记录.整理.   2.回顾流程    Sprint总结: ...