#encoding=utf-8
print('py init...... ')
g = (x*x for x in range(10))
for g_temp in g:
print(g_temp)
print('=='*10)
g1 = (x*x*2 for x in range(1,10))
print(next(g1))
print('fib start .....')
# 斐波拉契函数
def fib(max):
n,a,b = 0,0,1
while n < max:
print(b)
a,b = b,a+b
n = n + 1
return 'done'
a = fib(9)
print('fib end ..... ')
print('fib generator start .....')
# 斐波拉契函数
def fib(max):
n,a,b = 0,0,1
while n < max:
print(b)
yield(b)
a,b = b,a+b
n = n + 1
return 'done'
a = fib(5)
print('fib generator end ..... ')
def odd():
print('step 1')
yield 1
print('step 2')
yield 3
print('step 3')
yield 5
o = odd()
print(next(o))
while True:
try:
x = next(o)
print('yield value:',x)
except StopIteration as e:
print('e value: ',e.value)
break
'''
用于for循环的有两类:
list列表,tuple元组 , dict字典 ,set集合 ,str字符串
generator 迭代器
他们都有一个共同点:Iterable 可迭代对象
迭代器:可以被next() 函数调用并不断返回下一个值的对象称为迭代器
函数式编程:
提供部分支持,但不是纯函数式编程语言
高阶函数:
定义:变量可以指向函数,函数的参数能接受变量,那么一个函数就可以接受另一个函数作为参数
函数编程就是指这种高度抽象的编程范式
map()
reduce()
filter()
排序:sorted()
高阶函数可以把函数作为返回值
闭包的概念:
def lazy_sum(*args):
def sum():
ax = 0
for n in args:
ax = ax + n
return ax
return sum
f = lazy_sum(1,3,5,7)
print(f())
'''
网友评论