python基础之基本算法和装饰器
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基础之基本算法和装饰器的更多相关文章
- Python菜鸟之路:Python基础-逼格提升利器:装饰器Decorator
一.装饰器 装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等. 装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身 ...
- Python-Day4 Python基础进阶之生成器/迭代器/装饰器/Json & pickle 数据序列化
一.生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面 ...
- python 基础篇 11 函数进阶----装饰器
11. 前⽅⾼能-装饰器初识本节主要内容:1. 函数名的运⽤, 第⼀类对象2. 闭包3. 装饰器初识 一:函数名的运用: 函数名是一个变量,但他是一个特殊变量,加上括号可以执行函数. ⼆. 闭包什么是 ...
- python基础之闭包函数和装饰器
补充:全局变量声明及局部变量引用 python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量 global关键字用来在函数或其 ...
- Python基础2:反射、装饰器、JSON,接口
一.反射 最近接触到python的反射机制,遂记录下来已巩固.但是,笔者也是粗略的使用了__import__, getattr()函数而已.目前,笔者的理解是,反射可以使用户通过自定义输入来导入响应的 ...
- Python基础(7)闭包函数、装饰器
一.闭包函数 闭包函数:1.函数内部定义函数,成为内部函数, 2.改内部函数包含对外部作用域,而不是对全局作用域名字的引用 那么该内部函数成为闭包函数 #最简单的无参闭包函数 def func1() ...
- python基础编程: 函数示例、装饰器、模块、内置函数
目录: 函数示例 装饰器 模块 内置函数 一.函数示例: 1.为什么使用函数之模块化程序设计: 不使用模块程序设计的缺点: 1.体系结构不清晰,可主读性差: 2.可扩展性差: 3.程序冗长: 2.定义 ...
- Python基础(闭包函数、装饰器、模块和包)
闭包函数 格式: def 函数名1(): def 函数名2(): 变量 = 值 return 变量 return 函数名2 func = 函数名1() key = func()
- python基础补漏-05-生成器和装饰器
[1]生成器 很难用简单的语言描述生成器. 生成器:从字面上来理解,就是以某种规则为基础,不断的生成数据的工具 生成器函数: 在函数中如果出现了yield关键字,那么该函数就不再是普通函数,而是生成器 ...
随机推荐
- JavaScript ---属性
获取属性 可以通过点(.)或方挂号([])运算符来获取属性的值. 对于点(.)来说,右侧必须是一个以属性名称命名的简单标识符.对于[]来说,方挂号内必须是一个计算结果为字符串的表达式. var aut ...
- oracle vm virtualbox 如何让虚拟机可以上网
刚安装了虚拟机,系统linux2.6. 可是想安装一些软件,发现没法联网.郁闷~ 还要手动设置网络,可是也不是小白就可以干的事情,还要弄清楚原理才行. http://reverland.bitbuc ...
- [0x01 用Python讲解数据结构与算法] 关于数据结构和算法还有编程
忍耐和坚持虽是痛苦的事情,但却能渐渐地为你带来好处. ——奥维德 一.学习目标 · 回顾在计算机科学.编程和问题解决过程中的基本知识: · 理解“抽象”在问题解决过程中的重要作用: · 理解并实现抽象 ...
- VS快捷键的简单总结
一.一般的快捷键 Shift+Alt+Enter: 切换全屏编辑 Ctrl+B,T / Ctrl+K,K: 切换书签开关Ctrl+B,N / Ctrl+K,N: 移动到下一书签Ctrl+B,P: 移动 ...
- how to create a framework for ios . cool!
预热. http://www.raywenderlich.com/65964/create-a-framework-for-ios http://insert.io/framework-ios8-xc ...
- 2014 网选 5011 Game(Nim游戏,数学题)
/* 题意:Nim游戏! 思路:通过异或,判断将n个数表示成二进制的形式之后,是否对应位的数字1 的个数是偶数! */ #include<iostream> using namespace ...
- libtool: link: `dftables.lo' is not a valid libtool object
手误造成的错误: make & make install.&位操作符导致的错误!应该是make && make install.
- 将STM32的标准库编译成lib
转载自:http://www.cnblogs.com/zyqgold/p/3189719.html 以前一直使用STM32的标准库,需要一步步地将代码加进去,将编译选项设置好,然后再编译整个工程. 这 ...
- Odyssey.js – 创建互动的,有吸引力的故事
Odyssey.js 是一个开源工具,它可以让你的地图,叙述和其他多媒体结合成一个美丽的故事.创建新的故事很简单,要求无非是一个现代的 Web 浏览器和一个好的想法.你可以使用现成的模板来控制和设计精 ...
- CSS3魔法堂:背景渐变(Gradient)
一.前言 很久之前就了解过CSS3的线性渐变(Linear-Gradient),这段时间决定进一步认知这一特性,以下笔记以便日后查阅. 二.CSS3的各种背景渐变 1. 线性渐变 示例——七彩虹 ...