python基础知识---迭代器、生成器、装饰器
一、迭代器
二、生成器
http://www.cnblogs.com/huxi/archive/2011/07/14/2106863.html
def func(): #定义生成器,和普通函数的区别是有yield关键字
print(111)
yield 1
print(222)
yield 2
print(333)
yield 3
ret=func() #正常函数会执行,但这里并未执行,而是返回了生成器
print(ret)
r1=ret.__next__() #执行生成器函数,直到遇到yield 并返回yield后面的数据
print(r1)
r2=ret.__next__() #继续执行生成器函数,直到遇到yield 并返回yield后面的数据
print(r2)
r3=ret.__next__()
print(r3)
r4=ret.__next__() #已经没有yield可执行,会报错
print(r4)
def myrange(arg):
start=0
while True:
if start >arg:
return
yield start
start+=1
ret=myrange(3) #并没有执行生成器函数,而是返回了一个生成器对象
r=ret.__next__()
print(r)
r=ret.__next__()
print(r)
三、装饰器
装饰器的作用就是为已经存在的对象添加额外的功能。
装饰器函数的参数是需要装饰的函数,返回结果是装饰后的函数,然后用这个结果赋值给原先的函数。
http://www.cnblogs.com/huxi/archive/2011/03/01/1967600.html
1,最简单的装饰器
import time
def timeit(func):
def wrapper():
start = time.clock()
func()
end =time.clock()
print 'used:', end - start
return wrapper
@timeit #写在这里相当于foo=timeit(foo)
def foo():
print 'in foo()'
foo()
2,多层装饰器
USER_INFO={}
def check_login(func):
def inner(*args,**kwargs):
if USER_INFO.get('is_login',None):
ret=func(*args,**kwargs)
return ret
else:
print('请登录')
return inner
def check_admin(func):
def inner(*args,**kwargs):
if USER_INFO.get('user_type',None) == 2:
ret=func(*args,**kwargs)
return ret
else:
print('无权限查看')
@check_login
@check_admin
def index():
print('index')
index()
###装饰器:
##装饰器是函数
##装饰器参数是要被修饰的函数
##装饰器返回值是修饰后的函数
###多层装饰器:
###从里往外编译
###从外往里执行
###从里往外逐层返回
python基础知识---迭代器、生成器、装饰器的更多相关文章
- Day4 - Python基础4 迭代器、装饰器、软件开发规范
Python之路,Day4 - Python基础4 (new版) 本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 ...
- Python基础4 迭代器、装饰器、软件开发规范
本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 孩子,我现在有个需 ...
- python中的迭代器&&生成器&&装饰器
迭代器iterator 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束. 迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外, ...
- python中的迭代器 生成器 装饰器
什么迭代器呢?它是一个带状态的对象,他能在你调用next()方法的时候返回容器中的下一个值,任何实现了__iter__和__next__()(python2中实现next())方法的对象都是迭代器,_ ...
- python基础知识-11-函数装饰器
python其他知识目录 1.装饰器学习前热身准备 1.1装饰器简介 1.2装饰器热身分析 ) def func(): pass v1 = v2 = func #将函数名赋予一个变量,就和变量赋值是同 ...
- python基础之迭代器生成装饰器
基本概念 1.容器(container) 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, not in关键字判断元素是否包含在容器中.通常这类数据结构把所有的元 ...
- python基础之迭代器、装饰器、软件开发目录结构规范
生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大 ...
- Python 迭代器&生成器,装饰器,递归,算法基础:二分查找、二维数组转换,正则表达式,作业:计算器开发
本节大纲 迭代器&生成器 装饰器 基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - ...
- Python基础-迭代器&生成器&装饰器
本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 我现在有个需求,看 ...
- 迭代器/生成器/装饰器 /Json & pickle 数据序列化
本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 孩子,我现在有个需 ...
随机推荐
- WebService异常时,查看请求状态码方法
/// <summary> /// Test 的摘要说明 /// </summary> [WebService(Namespace = "http://tempuri ...
- office2016与visio2016不能“并存”的问题分析
现象: 先安装了office2016专业增强版,再安装visio2016时出现提示 搜集了相关资料,可以通俗的理解为:已经安装了离线客户端版的office后,不能再安装在线版visio. 之后,将of ...
- SQLite 函数大全
http://blog.sina.com.cn/s/blog_48e2ea3401012031.html
- Swift 简介
1.swift支持所有C和Obeject-c的基本类型,支持面向过程和面向对象的编程机制. 2.swift提供了2种功能强劲的集合类型:数组和字典 3.元祖 4.可选类型 5.swift 是一种类型安 ...
- python(28)获得网卡的IP地址
获得第几块网卡的ip地址: def get_ip_address(self,ifname): # ifname = 'eth0' s = socket.socket(socket.AF_INET, s ...
- sql server 跨数据库插入数据
创建服务器的连接,创建好后可以存在服务器上,可以在不同位置重复使用,和系统函数类似 exec sp_addlinkedserver 'RemoteServer', '', 'SQLOLEDB ', ' ...
- myBatis之事务管理
1. myBatis单独使用时,使用SqlSession来处理事务: public class MyBatisTxTest { private static SqlSessionFactory sql ...
- 【javascript 进阶】异步调用
前言 javascript的中的异步是很重要的概念,特别是ajax的提出,给整个web带来了很大的影响,今天就介绍下javascript的异步编程. 同步与异步 何为同步?何为异步呢? 同步:说白了就 ...
- eclipse项目debug方法
属性查看代码在哪里存 本地项目启动 1,2步骤需要success
- Mac 配置Charles抓https的包
安装Charles 这个简单,略过... 打开Charles,在Menu选择Help > Install Charles CA SSL Certificate Keychain Access(钥 ...