def gener():
print(‘草莓味’)
yield 1
print(‘香蕉味’)
yield 2
print(‘榴莲味’)
yield 3
g = gener()
num = g.next()
num = g.next()
num = g.next()
print(num)
for num in g:
print(’’ num)
def gener():
print(‘草莓味’)
yield 1
# smell = yield 1
# print(smell)
print(‘可乐味’)
smell2 = yield 2
print(smell2)
yield 3
g = gener()
print(g.next())
ret = g.send(‘香蕉味’) # g.__next__只不过传了一个值进去
print(ret)
ret2 = g.send(‘榴莲味’)
print(ret2)
计算移动平均值的例子
1,2,3,4,5
(1+2+3+4+5)/5
存过钱
利息 时时刻刻改变 7日年化收益
11.6 2017.11.6 11:09 - 2018.11.6 11:09
n分钟的平均值已经计算出来
你现在给我一个今天的值
根据之前的平均值给你算一个值出来
1
2
1+2 = 3
3/2
3
3 +3 = 6
6/3
4
6+4 = 10
10/4
计算移动平均值的例子
def cal_avg():
sum_n = 0
count = 0
while True:
if count:
num = yield sum_n/count # 7/1 num = 9 16/2 = 8 num = 8 24/4 = 8
else:
num = yield 0 # num = 7
sum_n += num # sum_n = 7 + 9 = 16 +8 = 24 +10
count += 1 # count = 1 + 1 = 2 + 1 = 3 + 1
# 7,9,8,10
g = cal_avg()
g.next() # 0
avg1 = g.send(7)
print(avg1)
avg2 = g.send(9)
print(avg2)
avg3 = g.send(8)
avg3 = g.send(10)
yield
生成器函数怎么调用,怎么从中取值
send/yield from
def func():
l1 = [1,2,3]
s2 = ‘abc’
l1.extend(s2)
for i in l1:
yield i
g = func()
for i in g:
print(i)
def func():
l1 = [1,2,3]
s2 = ‘abc’
for i in l1:
yield i
for j in s2:
yield j
g = func()
for i in g:
print(i)
def func():
l1 = [1,2,3]
s2 = ‘abc’
yield from l1
yield from s2
g = func()
for i in g:
print(i)
int 整数
float 浮点数
1.2
2.3333344
256.789 = 2.56789*10**2
为什么要叫浮点数 : 因为小数点是浮动的
浮点数能表示的数学上的数字 : 有理数(有限小数 无限循环小数)
浮点数的小数点是不准确的 : 小数的小数位是转换成二进制存储
a = 1.7265923649689710283508127969
a = 1.111111111188818181818111624
print(a)
转换成字符串存储
‘1.71264864975975073507505’
如果你创建的变量本身带小数点,那么这个变量的数据类型直接就是浮点数
所有的除法(除了//)得到的都是小数
除法
python2.x 整数除以整数就会取整(向下取整),有一个数浮点数,就按照浮点数计算
python3.x 所有的除(除了//)的结果都是小数
生成器函数中
send/next 生成器函数之外用的
yield/yield from 生成器函数之内用的
next+send == yield
如果函数中的yield要接收参数,那么应该使用send传值
如果函数中的yield不需要接收参数,那么应该使用next即可
生成器和迭代器是一样的,内部的值都只能取一次
从生成器中取值的方式也和迭代器是一样的:
# for
# next/send
# 数据类型的强制转换(list)