arduino编程语言和python,python和arduino串口通信

  arduino编程语言和python,python和arduino串口通信

  英语单词yield指的是生产。刚接触Python的时候,很迷茫,不知道yield的用法。

  不过我大致知道yield可以用来填充函数返回的数据。例如,下面的例子:

  efaddlist(列表) :

  因为我列出了:

  产量i 1

  取出列表中的项目,然后按i 1。然后,打电话把每个项目都拿出来。

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

  forxinaddlist(列表) :

  打印(x)是

  这确实是yield APP的一个例子。

  包含产量的函数

  假设你看到一个包含yield的函数。这意味着这个函数已经是一个生成器,它的执行与其他常用函数有很大的不同。例如,下面的简单函数:

  def h)):

  “打印为勇敢”

  产量5

  h()).

  h))之后,可以看到print语句还没有执行。这就是屈服。那么,如何执行print语句呢?这是下一个要讨论的问题。通过后面的讨论和学习,我们会明白yield的工作原理。

  2.屈服是一种表达

  在Python2.5之前,yield是一个语句,但在当前的2.5中,yield是一个表达式,如下所示:

  m=产量5

  公式yield 5的返回值代入m,认为m=5是错误的。那么,如何得到(收益率5)的返回值呢?需要稍后描述的send(msg)方法。

  接下来))通过句子看原理

  那么,我们来搞清楚收益率的结构。上面我们知道我们的H(),因为有yield表达式,所以调用时不会执行。因此,接下来))语句执行。Next))语句在下一个yield表达式之前继续执行生成器。例如:

  def h)):

  打印汶川

  产量5

  打印文件!

  c=h()).

  c.next()).

  调用c.next () (h))后,会输出结果,直到遇到yield 5。

  汶川

  当我们再次调用c.next())时,它将继续执行,直到找到下一个yield表达式。因为它背后没有yield,所以会抛出一个异常:

  汶川

  好吧!

  跟踪(mostrecentcalllast):

  文件/home/evergreen/codes/yi dld.py ,第11行,在

  c.next()).

  停止解释

  4 .发送(消息)和下一个)。

  接下来))在了解了如何执行包含yield的函数之后,我们再来看另一个非常重要的函数,send(msg)。实际上,next(和send))在某种意义上起着类似的作用。不同的是,send))可以传递yield表达式的值,而next))不能传递特定的值,只能传递None。所以,我们应该

  C.next(和c.send)功能相同。

  让我们看看这个例子。

  def h)):

  印刷体文传:

  m=产量5 #战斗!

  打印m

  d=产量12

  印上“我们在一起!”

  c=h()).

  C.next(#是c.send)(无)

  c . send(‘战斗!’()#(yield 5)表达式包含“战斗!”被授权。

  结果如下。

  汶川加油!

  在第一次调用中使用next(语句或发送)None。不能使用send发送非none值。发送None以外的值将导致错误,因为没有yield语句。

  5.5.send(msg)和next)的返回值

  Send(msg)和next)都有返回值。返回值比较特殊,返回下面yield表达式的参数:比如是yield 5,就返回5。目前为止,你知道些什么吗?在本文的第一个例子中,在list中用for i遍历生成器,但实际上是调用list的返回值。下一个()(列表。接下来)每次都是收益率的参数。继续上面的例子:

  def h)):

  印刷体文传:

  m=产量5 #战斗!

  打印m

  d=产量12

  印上“我们在一起!”

  c=h()).

  M=c.next(#m得到了yield 5的参数值5。

  d=c.send(战斗!(yield 12的参数值是12。

  打印‘我们永远不会忘记这个日期’,m,”,d

  输出结果:

  汶川加油!

  我们永远不会忘记这个日子。12

  6.抛出(并关闭))中断发生器

  中断发生器是一种非常灵活的技术。throw可以通过抛出生成器退出异常来退出生成器。Close))方法有相同的功能,但实际上throw(generatorexit)是内部调用的。让我们看看:

  defclose(自身) :

  尝试:

  self.throw(GeneratorExit)

  除了(generatorexit):

  及格

  否则:

  实时错误(generatorignoredgeneratorexit)。

  #未捕捉到其他异常

  因此,调用关闭(调用方法后为下一个) )或发送)消息)时,会抛出异常。

  跟踪后退(mostrecentcalllast):

  文件/home/evergreen/codes/yi dld.py ,第14行,在

  d=c.send(战斗!(四)取得了产量12的参数值12

  停止解释

  7.演示

  defgen(:

  打印( 111 ) ) )。

  m=产量ret 1

  我是打印(m)

  print(222))))))。

  n=产量ret 2

  打印(名词)是

  g=gen())

  打印(下一个)

  打印-)

  打印(g。发送( 111结束 ) )

  输出结果:

  111

  回复一

  -

  11超重

  222

  回复2

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

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