zoukankan      html  css  js  c++  java
  • 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在销售33[32;1m%s33[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在销售33[32;1m%s33[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的值

    您的资助是我最大的动力!
    金额随意,欢迎来赏!

    如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的推荐按钮。
    如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的关注我

    如果,想给予我更多的鼓励,求打

    因为,我的写作热情也离不开您的肯定支持,感谢您的阅读,我是【莫柔落切】!

    联系或打赏博主【莫柔落切】!https://home.cnblogs.com/u/uge3/

  • 相关阅读:
    类加载器加载class文件
    多线程用到的概念知识点
    3年工作经验你的程序员应该具备的技能
    面试题
    正则表达式(一)
    Servlet(五)----ServletContext对象
    Servlet(四)----HTTP、Response、servletContent
    JDBC(三)----Spring JDBC(JDBCTemplate)
    JDBC(四)----数据库连接池
    JDBC(三)----JDBC控制事务
  • 原文地址:https://www.cnblogs.com/uge3/p/6854351.html
Copyright © 2011-2022 走看看