python基础一 day14 生成器函数进阶
def generator():
print(123)
content = yield 1
print('=======',content)
print(456)
arg = yield 2
''''''
yield
g1 = generator()
g2 = generator()
g1.__next__()
g2.__next__()
print('***',generator().__next__())
print('***',generator().__next__()) g = generator()
ret = g.__next__()
print('***',ret)
ret = g.send('hello') #send的效果和next一样
print('***',ret) send 获取下一个值的效果和next基本一致
只是在获取下一个值的时候,给上一yield的位置传递一个数据
使用send的注意事项
第一次使用生成器的时候 是用next获取下一个值
最后一个yield不能接受外部的值 获取移动平均值
10 20 30 10
10 15 20 17.5
avg = sum/count
def average():
sum = 0
count = 0
avg = 0
while True:
num = yield avg
sum += num # 10
count += 1 # 1
avg = sum/count avg_g = average()
avg_g.__next__()
avg1 = avg_g.send(10)
avg1 = avg_g.send(20)
print(avg1) 预激生成器的装饰器
def init(func): #装饰器
def inner(*args,**kwargs):
g = func(*args,**kwargs) #g = average()
g.__next__()
return g
return inner @init
def average():
sum = 0
count = 0
avg = 0
while True:
num = yield avg
sum += num # 10
count += 1 # 1
avg = sum/count avg_g = average() #===> inner
ret = avg_g.send(10)
print(ret)
ret = avg_g.send(20)
print(ret) python 3
def generator():
a = 'abcde'
b = '12345'
for i in a:
yield i
for i in b:
yield i
def generator():
a = 'abcde'
b = '12345'
yield from a
yield from b g = generator()
for i in g:
print(i) send
send的作用范围和next一模一样
第一次不能用send
函数中的最后一个yield不能接受新的值 计算移动平均值的例子
预激生成器的装饰器的例子
yield from
python基础一 day14 生成器函数进阶的更多相关文章
- python基础一 day14 生成器函数进阶(1)
- python基础(9)-迭代器&生成器函数&生成器进阶&推导式
迭代器 可迭代协议和迭代器协议 可迭代协议 只要含有__iter__方法的对象都是可迭代的 迭代器协议 内部含有__next__和__iter__方法的就是迭代器 关系 1.可以被for循环的都是可迭 ...
- python学习日记(生成器函数进阶)
迭代器和生成器的概念 迭代器 对于list.string.tuple.dict等这些容器对象,使用for循环遍历是很方便的.在后台for语句对容器对象调用iter()函数.iter()是python内 ...
- python基础(十)--函数进阶
嵌套函数 >>> graphic = '三角形' >>> def chang(): graphic = '正方形' def chang1(): #内部嵌套的函数命名 ...
- python基础(8)-装饰器函数&进阶
从小例子进入装饰器 统计一个函数执行耗时 原始版本 import time # time模块有提供时间相关函数 def do_something(): print("do_something ...
- Python进阶-VI 生成器函数进阶、生成器表达式、推导式
一.生成器函数进阶 需求:求取移动平均数 1.应用场景之一,在奥运会气枪射击比赛中,每打完一发都会显示平均环数! def show_avg(): print('你已进入显示移动平均环数系统!') a ...
- python基础—迭代器、生成器
python基础-迭代器.生成器 1 迭代器定义 迭代的意思是重复做一些事很多次,就像在循环中做的那样. 只要该对象可以实现__iter__方法,就可以进行迭代. 迭代对象调用__iter__方法会返 ...
- 十六. Python基础(16)--内置函数-2
十六. Python基础(16)--内置函数-2 1 ● 内置函数format() Convert a value to a "formatted" representation. ...
- 十五. Python基础(15)--内置函数-1
十五. Python基础(15)--内置函数-1 1 ● eval(), exec(), compile() 执行字符串数据类型的python代码 检测#import os 'import' in c ...
随机推荐
- BZOJ2038【莫队算法】
THE FIRST 莫队算法. /************************************************************** Problem: 2038 User: ...
- POJ3715【二分匹配-增广】
题意: N个人,有两种人,M对亲密关系,问最少删除几个人达到没有亲密关系. 思路: 最大匹配 = 最小独立集,删掉该人对最大匹配数的影响,如果没有影响,删不删都无所谓,如果有影响贼删除: 类似HDU1 ...
- c# Marshal.PtrToStructure(StructPtr, typeof(T)); 特别注意
以下异常:Marshal.PtrToStructure(StructPtr, typeof(T)); 原因: 在实际使用中 T 没有一个 parameterless constructor 于是加 ...
- get 和 post 请求的区别(转)
转自 http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html http://www.nowamagic.net/librarys/ve ...
- one jar(转)
http://blog.csdn.net/kabini/article/details/1598827
- line-height与图文对齐 笔记
基本概念: 块:block 特点独行 内联:inline 内联块:inline-block 如果元素display属性默认值为block,则为块元素.如div p 如果元素display属性默认值为i ...
- JDBC连接池一 自定义连接池
package com.mozq.jdbc; import java.io.IOException; import java.io.InputStream; import java.sql.Conne ...
- Python-4-设置字符串的格式字符串
字符串是不可变的,所有元素赋值和切片赋值都是非法的 1.替换字段名 可以按顺序和名称匹配 >>> "{foo} {} {bar} {}".format(1, ...
- 去掉UItalbeview横线
一.去掉UItalbeview中所有横线 // self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; 二.自定义U ...
- SpringMVC-高级参数绑定
绑定数组 需求 在商品列表页面选中多个商品,然后删除. 需求分析 此功能要求商品列表页面中的每个商品前有一个checkbook,选中多个商品后点击删除按钮把商品id传递给Controller,根据商品 ...