DAY 20 装饰器扩展和迭代器
来源:互联网 发布:豚鼠系列 知乎 编辑:程序博客网 时间:2024/05/11 23:39
wraps模块
让原函数保留原来的说明信息
import timeimport randomfrom functools import wrapsdef auth(func): '''auth information''' @wraps(func) def auth_user(): func() return auth_user@authdef web(): '''web information''' time.sleep(random.randrange(1,5)) print('welcome to my web index')web()# 查看注释信息print(auth.__doc__)print(help(web))
有参装饰器
def deco(auth_type='file'): def auth(func): def wrapper(*args,**kwargs): if auth_type == 'file': print('文件的认证方式') elif auth_type == 'ldap': print('ldap认证方式') elif auth_type == 'mysql': print('mysql认证方式') else: print('不知道的认证方式') return wrapper return auth@deco(auth_type='abc') #@auth #index=auth(index)def index(): print('welecome to index')@deco(auth_type='ldap')def home(name): print('welecome %s to home page' %name)index()home('egon')
迭代器
迭代:
重复执行
下一次的重复执行依赖于上一次执行的结果
以下代码只满足重复执行,每下一次执行都是从头开始执行的,所以不属于迭代。
while True: cmd=input('>>: ') print(cmd)
以下代码满足重复执行,而且每下一次执行都是从上一次执行后的结果开始执行的,属于迭代
1
2
3
4
5
l
=
[
'a'
,
'b'
,
'c'
,
'd'
]
count
=
0
while
count <
len
(l):
print
(l[count])
count
+
=
1
迭代器
python为了提供一种不依赖于索引的迭代方式,会为一些对象内置__iter__方法,obj.__iter__称为可迭代的对象。
s1='hello'l=[1,2,3]t=(1,2,3)set1={1,2,3}d={'a':1,'b':2,'c':3}f=open('db.txt',encoding='utf-8')
字符串、元组、列表、集合、字典、文件等都是可迭代对象,迭代的过程中都能够用到迭代器。
迭代器就是obj.__iter__()得到的一个结果,每次使用obj.__next__()都能够获得一个迭代后的结果,当所有的元素都迭代后,会抛出“StopIteration”的错误提示表示没有内容可以继续迭代了。
d={'a':1,'b':2,'c':3}i=d.__iter__() #i叫迭代器print(i)print(i.__next__())print(i.__next__())print(i.__next__())print(i.__next__()) #StopIteration
迭代器的优缺点:
迭代器的优点
1:提供了一种不依赖于索引的取值方式
2:惰性计算。节省内存
迭代器的缺点:
1:取值不如按照索引取值方便
2:一次性的。只能往后走不能往前退
3:无法获取长度
迭代器的应用
在for循环迭代的过程中,每一次的循环都有迭代器的参与。
l=['x','y','z']for item in l: #i=l.__iter__() print(item)
数字是无法迭代的对象
阅读全文
0 0
- DAY 20 装饰器扩展和迭代器
- Day 20 装饰器 、迭代对象、迭代器
- Day 19 闭包函数、简单装饰器
- Python之装饰器、迭代器和生成器
- 三神器-迭代器、生成器和装饰器
- 生成式和生成器 、迭代器、装饰器
- 装饰模式和python装饰器
- siteMesh装饰器 指定装饰和不装饰
- 扩展型模式之Decorator(装饰器)模式
- Python_类和装饰器
- python 递归和装饰器
- 装饰器,生成器,迭代器
- 装饰器、迭代器、生成器
- 迭代器 生成器 装饰器
- python学习之迭代器、生成器和装饰器
- 无参数装饰器和有参数装饰器
- 装饰模式 -- 扩展系统功能
- 扩展系统功能--装饰模式
- 【Java并发】
- 再见,CSDN!
- C++笔记 引用
- Day 20 装饰器 、迭代对象、迭代器
- 嵌入式Linux设备驱动开发笔记(五)
- DAY 20 装饰器扩展和迭代器
- 机器学习&深度学习资料分享
- java模拟并发请求测试方法是否线程安全
- 2017.6.19-python学习-stringIO和byteIo
- CPU卡实验_百度文章
- POJ3276-Face The Right Way
- Qt读取excel的代码,已经封装好了
- CSS选择器
- 一个 11 行 Python 代码实现的神经网络