python创建迭代器,python的装饰器,迭代器,yield

  python创建迭代器,python的装饰器,迭代器,yield

  本文主要详细介绍python的迭代器、生成器和装饰器。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下,希望能帮到你。

  

python 迭代器与生成器,装饰器

  迭代器对象从集合的第一个元素开始访问,直到所有元素都被访问。

  迭代器有iter基本方法:iterator()和next()。

  字符串、列表或元组对象可用于创建迭代器:

  列表1=[1,2,3]

  S=iter(list1) #创建迭代器对象

  Print(next(s)) #输出迭代器的下一个元素

  打印(下一页)

  打印(下一页)

  在计算完最后一个元素之前,如果没有更多的元素,将引发StopIteration错误。

  迭代器对象可以使用常规for语句进行遍历:

  列表2=[1,2,3,4,5]

  S2=iter(list2) #创建迭代器对象

  对于s2:中的h

  打印(h,end=-)

  生成器

  带有yield的函数在Python中称为generator(自己制作迭代器可以看作是一个生成器)。

  #注意括号

  #列表生成

  lis=[x x for x in range(5)]

  打印(lis)

  #发电机

  gen=(x x for x in range(5))

  打印(一般)

  # gen=(x x for x in range(5))

  #打印(下一页)

  #打印(下一页)

  #打印(下一页)

  #打印(下一页)

  #打印(下一页)

  generator_ex=(x x for x in range(5))

  用于发电机_ex:中的I

  打印(一)

  生成支持小数的范围生成器(即带yield的迭代器)。

  先把收益率想成“回报”。这是直观的。一开始是回归。普通返回是什么意思,就是在一个程序中返回某个值,返回之后程序就不再运行下去了。看看return,把它看成生成器的一部分(带yield的函数才是真正的迭代器)。

  def frange(星形,停止,步进):

  x=星形

  而xstop:

  产量x

  x=步长

  因为我在法兰奇(10,20,0.5):

  打印(一)

  下图最直观的看到了收益率的作用。

  把收益当做回报。返回4后,程序停止,并且不执行对res的赋值。

  有收益的函数是一个生成器。生成一个生成器看起来像一个函数调用,但它不会执行任何函数代码,直到对它调用next()为止(next()将在for循环中自动调用)。虽然执行流还是按照函数流执行,但是每执行一条yield语句就会被中断,返回一个迭代值。下一次执行将从下一个yield语句继续。看起来好像一个函数在正常执行过程中被yield中断了几次,每次中断都会通过yield返回当前的迭代值。

  def foo():

  打印(开始.)

  而True:

  打印(“屈服前”)

  res=收益率4

  打印(“产出后”)

  打印( res: ,res)

  g=foo()

  打印(下一个(g))

  打印( * * 20)

  打印(下一个(g))

  当我们调用这个函数的时候,第一件事不是执行这个函数,而是把这个函数作为参数传入它头上的帽子,我们称之为装饰函数或者装饰品。

  装饰工的使用方法很固定:

  先定义一个装饰函数(hat)(也可以用类或者部分函数实现)。

  然后定义你的业务职能,或类(人)

  最后,把这顶帽子戴在这个人的头上。

  饰品的简单用途有很多,这里介绍两个常见的。

  日志打印机

  时间计时器

  #这是一个装饰功能。

  定义记录器(功能):

  定义包装(*args,**kw):

  打印(我准备开始计算:{}函数: 。格式(func。__name__))

  #真正执行的是这一行。

  func(*args,**kw)

  print(‘啊哈,我算完了。给自己加个鸡腿!)

  返回包装

  @logger

  def add(x,y):

  print({} {}={} )。格式(x,y,x,y))

  加法(200,50)

  #这是一个装饰功能。

  定义定时器(功能):

  定义包装(*args,**kw):

  t1=time.time()

  #这是函数真正执行的地方

  func(*args,**kw)

  t2=time.time()

  #计算时间长度

  成本时间=t2-t1

  打印(花费时间:{}秒。格式(成本时间))

  返回包装

  导入时间

  @定时器

  def want_sleep(睡眠时间):

  时间.睡眠(睡眠时间)

  想睡觉(10)

  极好的美国():

  打印(我来自中国。)

  极好的中文():

  打印("我来自美国。")

  def say_hello(国家):

  定义包装(功能):

  def deco(*args,**kwargs):

  如果国家=中国:

  打印(你好!)

  elif contry== america :

  打印("你好。")

  else:

  返回

  # 真正执行函数的地方

  func(*args,**kwargs)

  返回装饰

  返回包装

  @say_hello(中国)

  极好的美国():

  打印(我来自中国。)

  @say_hello(美国)

  极好的中文():

  打印("我来自美国。")

  

总结

  本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注盛行信息技术软件开发工作室的更多内容!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: