爬虫学习使用指南

Auth: 王海飞

Data:2018-06-15

Email:779598160@qq.com

github:https://github.com/coco369/knowledge

1. 练习题集

习题1,输出结果

代码:

import sys


def simple_coroutine(a):
    print('-> start')

    b = yield a
    print('-> recived', a, b)

    c = yield a + b
    print('-> recived', a, b, c)


sc = simple_coroutine(5)

next(sc)

try:
    sc.send(6) # 5, 6
    sc.send(7) # 5, 6, 7
except StopIteration as e:
    sys.exit()

习题2,协程计算移动平均值

def averager():
    total = 0.0
    count = 0
    avg = None

    while True:
        num = yield avg
        total += num
        count += 1
        avg = total/count

# run
ag = averager()
# 预激协程
print(next(ag))     # None

print(ag.send(10))  # 10
print(ag.send(20))  # 15
  1. 调用 next(ag) 函数后,协程会向前执行到 yield 表达式,产出 average 变量的初始值——None。
  2. 此时,协程在 yield 表达式处暂停。
  3. 使用 send() 激活协程,把发送的值赋给 num,并计算出 avg 的值。
  4. 使用 print 打印出 yield 返回的数据。

书籍推荐