递归函数、生成器、装饰器
递归函数、生成器、装饰器
递归: 在函数执行中调用自身
必须有边界条件,递归前进段和递归返回段
python中递归有层次限制
递归函数实现阶乘
def fact(n): if n <= 1:return 1else:return n * fact(n-1)
调用:fact(3)=3fact(2)=32fact(1)=32*1
fact(3)
6
实现斐波拉契数列
def fib1(n):if n <= 1:return 1else:return(fib1(n-1)+fib1(n-2))
for i in range(10):print(fib1(i))
1 1 2 3 5 8 13 21 34 55
生成器
普通函数遇到return返回函数结束,再次执行又从第一条语句开始
生成器遇到yield返回函数被挂起,再次执行则从上一次返回yield语句的地方继续执行
定义一个生成器函数
def gen():print('step 1')yield 1print('step 2')yield 2print('step 3')yield 3
a=gen()next(a)
step 1
1
next(a)
step 2
2
装饰器:在不改变已存在对象的基础上为其添加额外功能
典型应用:插入日志、测试性能、事物处理
给foo函数计算运行时间
import timedef foo():print('in foo()')# 定义一个计时器,传入一个函数,并返回另一个附加了计时功能的方法def timeit(func):# 定义一个内嵌的包装函数,给传入的函数加上计时功能的包装def wrapper():start = time.clock()func()end =time.clock()print('used:', end - start)# 将包装后的函数返回return wrapperfoo = timeit(foo)foo()
in foo() used: 0.0018359999999972842
python装饰器提供的语法糖效果,下面的@timeit跟上面的foo = timeit(foo)是完全等价的
import timedef timeit(func):# 定义一个内嵌的包装函数,给传入的函数加上计时功能的包装def wrapper():start = time.clock()func()end =time.clock()print('used:', end - start)# 将包装后的函数返回return wrapper@timeitdef foo():print('in foo()')foo()
in foo() used: 0.0013369999999994775
转载于:https://blog.51cto.com/mofeihu/1877144
递归函数、生成器、装饰器相关推荐
- 迭代器 生成器 装饰器 匿名函数
迭代器 生成器 装饰器 匿名函数 #可迭代对象:列表.字典.集合.字符串:能够被for 循环遍历的对象# 数字类型不可迭代:# name="wangyifei"# for i in ...
- [转载] 递归函数python基例_python递归函数详解 python 递归函数使用装饰器
参考链接: Python递归 移动宽带检查显示 CRM,radius状态不一致是怎么回事啊?您可以把电信宽带猫等设备重启试一下,如果仍然不行,可以拨打10000号请工作人员帮您查看.处理. 电信宽带诊 ...
- 迭代器/生成器/装饰器 /Json pickle 数据序列化
本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 孩子,我现在有个需 ...
- Python基础 day4 迭代器生成器 装饰器 Json pickle 数据序列化 软件目录结构规范 作业:ATM项目开发...
本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 列表生成器 1.列表生成式,迭代器&生成器 列表生成式 孩子, ...
- Python 3 学习——函数扩展and迭代器生成器装饰器
Python 学习的第九小节 写此博客 是为了激励自己,并且将自己的心得以及遇到的问题与人分享 一.学习笔记 1. 高阶函数 函数名可以作为函数参数输入 .可以进行赋值.还可以作为返回值. 2.作用域 ...
- python 生成器装饰器_对Python生成器、装饰器、递归的使用详解
1.Python生成器表达式 1).Python生成器表达式 语法格式: (expr for iter_var in iterable) (expr for iter_var in iterable ...
- Python开发基础总结(三)排序+迭代+生成器+装饰器
一.排序 1. list自己提供了排序的函数:sort. 2. sort的参数: a) cmp是一个比较函数,输入两个元素,比较大小,返回值为-1,0,1. b) key也是一 ...
- python学习day-8 迭代器 生成器 装饰器
http://www.cnblogs.com/linhaifeng/articles/7580428.html 迭代器#迭代器即迭代的工具,那什么是迭代呢?#迭代是一个重复的过程,每次重复即一次迭代, ...
- python 递归函数_让你Python到很爽的加速递归函数的装饰器
Python技巧--好用的一个装饰器 今天我们会讲到一个装饰器. 注记:链接"装饰器"指向廖雪峰老师的Python3教程中的装饰器教程.可以在这里快速了解什么是装饰器. `@fun ...
- python迭代器生成器装饰器
基本概念 学习python中有什么不懂的地方,小编这里推荐加小编的python学习群:895 817 687有任何不懂的都可以在里面交流,还有很好的视频教程pdf学习资料,大家一起学习交流! 1.容器 ...
最新文章
- 按键驱动的思路分析和代码实现
- Mex文件在VS2010中调试方法
- python元类简述
- ViewGroup.LayoutParams
- 20101008 搬家
- webservice 启用代理服务器
- Hadoop基础--HDFS/Yarn/MapReduce概述
- ES 必备插件的安装
- java学生管理系统报告_java学生管理系统总结报告.doc
- 连接池原理解读,各个连接池对比
- 华硕服务器怎么装win7系统教程,华硕win7系统重装教程
- 解决scrapy下载小说乱序
- ssh publisher_3种Microsoft Publisher的开源替代品
- 什么是单片机中的掉电复位(BOR)?如何防止错误掉电
- 量化思维与常见的量化标
- oracle导出辅助账明细,AO2011导入国库集中支付系统3.0的辅助账资料.doc
- java基础练习—逢七游戏、不死神兔、百钱百鸡、利滚利
- java字符串--数组(相互转化)
- # Typora使用教程
- 从”腾讯为什么要区分q币和q点”谈58与赶集余额商业产品
热门文章
- linux下创建proc文件系统,[转载]Linux下的proc文件系统(转载)
- python统计字符串中数字个数 socket_Python中socket中的listen()里参数(数字)到底代表什么?...
- truncate数据后回收空间_Truncate用法详解
- 计算机缺乏内存将无法运行,电脑增加内存为什么无法启动
- android 动画 返回,Android TranslateAnimation在动画后重置
- RDMA技术详解(一):RDMA概述
- matlab cell取一列,MATLAB cell struct
- CF1010F Tree
- mysql查询优化技巧
- Python Requests快速入门