python第十二天 生成器,迭代器,内置函数

第二模块学习:  生成器,迭代器,内置函数

生成器特点:只有在调用时才会生成相应的数据,运行的速度快!

示例:

 1 def fil(max):#斐波那契数
 2     n,a,b=0,0,1  #定义初始数据
 3     
 4     while n<max:
 5         yield b
 6         a,b=b,a+b #进进第二次的赋值
 7         n+=1
 8     
 9         
10     return '---deno----'
11 
12 a=fil(10)
13 while True:
14     try:
15         print(a.__next__())#打印返回值
16     except StopIteration as e:#异常返回
17         print('XXXXXX',e.value)
18         break

yield  生成器断点缓存 可赋于变量

.send()可以为yield 传值、数据

示例:

 1 #利用生成器 可形成多并发
 2 #
 3 name_1='销售点A'
 4 name_2='销售点B'
 5 name_sc='大丰厂'
 6 yf='衣服'
 7 
 8 def a(name):
 9     print("产品%s………准备完毕………"%name)
10     while True:
11         doc=yield#生成器断点缓存
12         print('%s在销售\033[32;1m%s\033[0m'%(name,doc))#传入打印出来
13 
14 # c=a('销售点A')
15 # c.__next__()#首次运行加载 doc
16 # yf='衣服'
17 # c.send(yf)
18 # c.__next__()
19 # c.__next__()
20 # c.__next__()
21 def b(name):
22     print("产品%s………准备完毕………"%name)
23     while True:
24         doc=yield#生成器断点缓存
25         print('%s在销售\033[32;1m%s\033[0m'%(name,doc))#传入打印出来
26 
27 def sc(name):#生产产家
28     
29     c=a(name_1)
30     d=b(name_2)
31     c.__next__()#首次加载
32     d.__next__()
33     print('%s开始生产了…………'%name)
34     for x in range(10):
35         print('生产了%s件%s'%((x+1)*2,yf))
36         c.send(yf)
37         d.send(yf)
38 
39 sc(name_sc)

 

迭代器:Iterator

  可以返回下一个值的迭代对象,就可以称为迭代器

迭代对象:Iterable

  可以被for循环的对象,如列表,字典,字符串等,可以称为迭代对象!

iter() 可以将迭代对象转化有迭代器

生成器属于迭代器中的一种

 

内置函数:

1 abc(i)#返回绝对值
2 all()#当可迭代对象值都为真时才返回真
3 any()#当可迭代对象值有一个为真时就返回真
4 ascii()#可以将列表转为ascii表对应的字符串输出
5 bin()#十进制转二进制………………

   

 1 #计算1+1到100的值
 2 
 3 #return 返回
 4 
 5 def test(num):
 6     
 7     i=1
 8     sumresult = 0
 9     while i<=num:
10         sumresult = sumresult + i
11         i+=1
12     return sumresult
13 
14 result = test(100)
15 print ('resolt = %d'%result)
return 返回 
 1 #计算1+1到100的值
 2 
 3 #return 返回
 4 
 5 def test2(num):
 6 
 7     if num>=1:
 8         result = num + test2(num-1)
 9     else:
10         result = 0
11     return result
12 
13 result = test2(100)
14 print ('result = %d'%result)
#计算1+1到100的值 
 1 #计算1+1到100的值
 2 
 3 # return 返回
 4 
 5 def test3(num):
 6     if num>=1:
 7          result =num * test3(num-1)
 8     else:
 9         result =1
10     return result
11 
12 result = test3(4)
13 print ('result = %d'%result)
#计算1+1到100的值

 

posted @ 2017-05-14 22:59  莫柔落切  阅读(430)  评论(0编辑  收藏  举报