day 18 笔记

装饰器补充:index = wrapper()
index()
def index():
"""登录模块"""
pass
index.__name__()
index.__doc__()
def otter(func):
@wraps(func)
def wrappers():
from functools import wraps

wraps是将我们的装饰器进一步完善的一个方法。

有参装饰器:在装饰器的基础上如果产生了需要额外参数的传入,我们应该使用有参装饰器。
def login():
file
mysql
ldap
def auto(test):
def otter(func):
@wraps(func)
def wrappers(*args,**kwargs):
func(*args,**kwargs)
if test ==“file”:
打开文件 认证用户名密码
return wrapper
return otter

@auto("file")
test()
1.什么是迭代器:迭代器就是用来迭代取值的这么一个工具,迭代是以个重复的过程,而且每次都是基于上次的结果进行重复的,
while True:
print(...)
单纯的重复不叫迭代。
2.为什么要有:就是为了循环执行功能而产生的,涉及到取值等操作
while循环实现对有索引关系的类型的一个循环取值
针对无索引类型的循环取值需求 python为我们提供了一种工具,可以不依赖索引,它就是迭代器
3.如何用:
1.可迭代对象,list[]
list.__iter__()
但凡内置有__iter__方法的都称之为可迭代对象
在调用__iter__方法时我们将其转化为一个迭代器对象 x = list.__iter__()
2.迭代器对象 x.__next__() x.__iter__()
但凡内置有__iter__与__next__方法的都称之为迭代对象
调用.__next__()得到迭代器的下一个结果
在调用__iter__方法时我们得到的是迭代器对象本身

文件就是一个迭代器对象

for循环工作原理:又称为迭代循环 in后可以跟任意的可迭代对象
print(shuchuhashjfhia)
iter(x)
next(iter(x))

goods=['mac','lenovo','acer','dell','sony']
goods[5]
i=iter(goods) #每次都需要重新获取一个迭代器对象 = goods=['mac','lenovo','acer','dell','sony']
while True: for item in goods.__iter__():
try: print(item)
print(next(i))
except StopIteration: #捕捉异常终止循环
break

迭代器优缺点:优点: 1.为序列和非序列类型提供了一种统一的迭代取值方式
2.惰性运算
缺点: 1.除非用尽,我们无法获得迭代器的长度
2.只能去下一个值,无法回到上一个值

猜你喜欢

转载自www.cnblogs.com/Jicc-J/p/12562217.html