标题: python学习第四天_刘国平_2021.1.21 [打印本页] 作者: 果丹卷 时间: 2021-1-21 23:09 标题: python学习第四天_刘国平_2021.1.21 一、工作内容9:00-20:00
1.'''生成器generator'''
'''
l=[x*x for x in range(10)]
print(l)
t=(x*x for x in range(10))
print(t)
#使用next(方法),可以获取生成器中的下一个元素
print(next(t))
print(next(t))
#如果生成器中的元素已经取完了,则抛出StopIteration异常
#print(next(t))
print('----------------------------------------------')
g=(x*x for x in range(10))
for i in g:
print(i)
利用函数实现生成器
import time
#自然数序列
def nature():
n=1
while True:
'''
#return n 1.返回n的值 2.立即结束函数的执行
#yield n 1.返回n的值 2.立即暂停函数的执行
#print(n)
#yield n
#n+=1
#time.sleep(1)
g =nature()
print(g)
print(next(g))
print(next(g))
print(next(g))
print(next(g))
for e in g:
print(e)
#time.sleep(1)
#练习:利用生成器生成斐波那契数列
def f(n):
if n<3:
return 1
return(f(n-1)+f(n-2))
def l():
n=1
while True:
yield(f(n))
n=n+1
time.sleep(1)
print(next(l()))
print(next(l()))
print(next(l()))
print(next(l()))
'''
def fib():
a,b=0,1
while True:
yield b
'''n=a
a=b
b=n+b'''
a,b = b,a+b #先计算赋值符号的右边,然后再赋值
f=fib()
for i in f:
print i
2.'''
高阶函数
函数名本质上就是一个指向该函数的变量
'''函数作为返回值2'''
def s(*args):
ss =0
for arg in args:
ss +=arg
return ss
print(s(1,2,3,4))
print(s(1,3,5,7))
# lazy_s()函数中定义了内部函数s(),而s()函数中又引用了外部函数lazy_s()的参数args,
#当lazy_s()函数返回函数s(),相关的参数和变量都已经保存在返回的函数中
#我们把这种程序结构称为闭包Closure
def lazy_s(*args):
def s():
ss=0
for arg in args:
ss+=arg
return ss
return s