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关键字,那么该函数就不再是普通函数,而是生成器 ...
随机推荐
- [翻译]使用Swift在Xcode中创建自定义控件
使用Swift在Xcode中创建自定义控件 原文 IBDesignable and IBInspectable With IBDesignable and IBInspectable, develop ...
- 130 个你需要了解的 vim 命令
基础 :e filename Open filename for edition :w Save file :q Exit Vim :q! Quit without saving :x Write f ...
- 使用SQL联合查询来构建临时vo对象的应用
联合查询: 表1: team球队表 表2:schedule 赛程表 需要数据: 球队名称.主队ID.主队名称.客队ID.客队名称.胜负情况 方法1. Object数组取出列和数值 import jav ...
- tengine-2.1.0 + lua + base64
参考:http://my.oschina.net/eduosi/blog/169606 安装 readline,lua 编译需要用到这个,centos 可以通过 yum 直接安装,如果不需要系统的,可 ...
- Ubuntu桌面版本和服务器版本之间的区别(转载)
转载自:http://blog.csdn.net/fangaoxin/article/details/6335992 http://www.linuxidc.com/Linux/2010-11/297 ...
- VC文件夹大小(转)
使用自带的类 CFileFind finder.FindNextFile(); 遍历所有文件,按照修改时间顺序遍历 //参数输入 文件夹路径 //返回文件夹大小 byte DWORD GetDirS ...
- Flex知识备忘
div被flex遮挡 //如果设置z-index无效,那么设置flex加载参数 params.wmode = "Opaque";
- DDD:《实现领域驱动》拾贝(待续)
Design is not just what it looks like and feels like. Design is how it works.
- NPM install - killed error solution
在接手一个Node项目的时候,npm install.却出现了"killed"的错误.以为是Node版本的问题,熟练地切换了0.11与0.10版,同样无解. 由于新的npm版本吧, ...
- Sphinx全文索引 第一节
1 使用场景:用来解决站内搜索的一些应用场景. 网站中的搜索(站内搜索) 系统后台中的搜索 第一种方式:PHP——>MySQL 第二种方式:MySQL<——>Sphinx:PHP—— ...