标题: Python_樊江飞_20210121 [打印本页] 作者: 皮皮虾 时间: 2021-1-21 20:18 标题: Python_樊江飞_20210121 '''生成器generator'''
# l = [x*x for x in range(11)]
# print(l)
t = (x*x for x in range(10))
print(t)
#使用next()方法,可以获取生成式中的下一个元素
print(next(t))
print(next(t))
#如果生成器中的元素已经取完了,则抛出stopIteration异常
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(next(g))
for e in g:
print(e)
time.sleep(1)
yield n
print(next(g))
'''
1 1 2 3 5 8 13
a = 0 b = 1 a+b=1; a = b b =a+b
a = 1 b = 1 a+b=2: a=b b =a+b
a = 2 b = 3 a+b=3; a=b b =a+b
a = 3 b = 5 a+b=8; a=b b=a+b
'''
print('----------------------------------------------------------')
def fib():
a,b = 0,1
while True:
yield b
t = a
a = b
b = t+b
#先计算赋值符号的右边,然后再赋值
a,b = b,a+b
time.sleep(1)
# f = fib()
# print(f)
# print(fib)
# for i in f:
# print(i)
# time.sleep(0.5)
from collections.abc import Iterable
print(isinstance(f,Iterable))
'''
高阶函数
#map()函数 高阶函数,g是一个新的函数,打出列表。函数是一个参数传入取值。
r = map(g,[1,2,3,4,5])
print(list(r))
'''函数作为返回值'''
def s(*args):
ss = 0
for arg in args:
ss += arg
return ss
print(s(1,2,3,4,5,6))
print(s(1,3,5,7,9))
'''
lazy_s()函数中定义了内部函数是s(),而s()函数中又引用了外部函数lazy_s()的参数arges
当lazy_s()函数返回函数s(),相关的参数和变量都已经保存在返回的函数中
我们把这种程序结构称为闭包closure'''
def lazy_s(*args):
#定义函数
def s ():
ss = 0
for arg in args:
ss += arg
return ss
return s
h = lazy_s(1,2,3,4)
print(h)
print(h())'''
def s ():
ss = 0
for arg in (1,2,3,4):
ss += arg
return ss
print(h)
print(h())
'''匿名函数lambda 表达式
匿名函数一般用于处理简单函数
'''
def g(x):
return x*x
r = map(g,[1,2,3,4,5,6])
print(list(r))
r = map(lambda x:x*x*x,[1,2,3,4,5,6])
print(list(r))