python之路——13

复习

1.函数
1.函数的定义和调用
2.参数及传递顺序
形参角度: 位置参数;*args;默认参数;**kwargs
实参角度: 按位置传,按关键字传
3.返回值:0/1/多个
4.闭包函数——内部函数引用外部函数变量
2.装饰器
1.作用:不改变函数调用方式的情况下,在函数前后增加功能
2.原则:开放(扩展)封闭(修改)原则
3.from functools import wraps
@wraps(func)
4.带参数的装饰器

学习内容

1.迭代器
[]--可迭代对象 [].__iter__()--迭代器
1.可迭代对象:list,dic,set,tuple,f = open(),str,range(),enumerate
2.可以被for循环的数据类型,都拥有_iter_方法
3.含有__iter__方法的都是可迭代的——可迭代协议
4.迭代器协议——内部含有__next__和__iter__方法的就是迭代器
5.可迭代的.__iter__()方法就可以得到一个迭代器
6.迭代器中的__next__()方法可以一个一个的获取值
2.使用情况:
函数返回:
1.iterator
2.可迭代对象
3.直接返回内存地址
3.优点
1.从容器类型中逐一取值,所有值
2.节省内存空间 range(100000) 不直接在内存中生成数——随循环或者next逐一生成
文件句柄——可迭代,
4.生成器
生成器函数

代码区

'''
# 所有关于列表的操作
print(dir([]))
# 双下方法
print([1].__add__([2]))
print([1]+[2])    # python解释器内部通过调用add计算

print('_iter_' in dir(int))  # in

l = [1,2,3]
print(l.__iter__().__next__())
iterator = l.__iter__()
print(iterator)
'''
# for 循环内部
'''
l = [1,2,3]
for i in l:
    print(i)
#1. iterator = l.__iter__()
#2. iterator.__next__()

# range 函数
# print(range(1000))
# print(list(range(1000)))
'''
# 生成器函数
'''
def generator():
    print(1)
    print(2)
    yield 'a'
    print(3)
    yield 'b'
g = generator()
for i in g:
    print(i)
# ret = g.__next__()
# ret = g.__next__()
'''
# 生成器可以随时连续取值
'''
def wahaha():
    for i in range(2000000):
        yield '娃哈哈%s'%i
g = wahaha()
count = 0
for i in g:
    count += 1
    print(i)
    if count >50:
        break
print('****',g.__next__())
count = 0
for i in g:
    count += 1
    print(i)
    if count >50:
        break
'''
# 监视文件输入
def tail(filename):
    f = open('log',encoding='utf-8')
    while True:
        line = f.readline()
        if line.strip():
            yield line.strip()

g = tail('file')
for i in g:
    if 'python' in i:
        print('***',i)

猜你喜欢

转载自www.cnblogs.com/wan2-0/p/10607290.html