我们都知道打印从0到10的方法:
[ _ for _ in range(0,11)]
#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
1、如果写个函数,直接func(0,10)就可以得到同样结果,如何做到呢?
构建Generator Function
def ints(start, end):
i = start
while i <= end:
yield i
i += 1
ints(0, 10)
#<generator object ints at 0x...>
[_ for _ in ints(0, 10)]
#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
2、如果给定一个start,想打印后面的无穷数(没有end):
def ints(start, end = None):
i = start
while i <= end or (end is None):
yield i
i += 1
3、如果想打印 0, +1, -1, +2, -2, +3, -3, …:
def ints(start, end = None):
i = start
while i <= end or end is None:
yield i
i = i + 1
def ints_all():
yield 0
for i in ints(1):