资讯专栏INFORMATION COLUMN

Python海象运算符(:=)的三种用法

89542767 / 169人阅读

  这篇文章主要介绍了Python海象运算符(:=)的三种用法,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下


  前言


  随着Python3.8的发布,赋值表达式运算符(也称为海象运算符)也发布了。运算符使值的赋值可以传递到表达式中。这通常会使语句数减少一个。


  例如:


  my_list=[1,2,3]
  count=len(my_list)
  ifcount>3:
  print(f"Error,{count}istoomanyitems")
  #whenconvertingtowalrusoperator...
  if(count:=len(my_list))>3:
  print(f"Error,{count}istoomanyitems")


  如果您快速浏览了一下,就会理解对这个新操作的担忧。似乎将两个简单的语句混为一谈,以使收益最小。


  假设对于为什么引入此运算符有合理答案?那么让人很自然的想到,它在现实世界中如何有用?


  我发现了我将要继续采用海象运算符的三个方面,且每个方面除了能省一行代码之外都还能带来其他好处。


  While循环


  虽然循环似乎是最常见的使用海象运算符的情况。在此处使用海象运算符的好处是可以在while语句中合并表达式和修饰符。我已经写过无数次无限循环了,因为我总是忘记在循环末尾写修改语句。


  line=f.readLine()
  whileline:
  print(line)
  line=f.readLine()
  #whenconvertingtowalrusoperator...whileline:=f.readLine():
  print(line)


  不过要注意,使用海象运算符更适合用于传统的do/while循环,因为赋值在循环表达式之前。


  请参见下面的差异:


  n=0
  whilen<3:
  print(n)#0,1,2
  n+=1
  #whenconvertingtowalrusoperator...
  w=0
  while(w:=w+1)<3:
  print(w)#1,2


  根据我有限的经验,我发现它在替换无限while循环中最有用:


  whileTrue:
  p=input("Enterthepassword:")
  ifp=="thepassword":
  break
  #whenconvertingtowalrusoperator...
  while(p:=input("Enterthepassword:"))!="thepassword":
  continue

  能够将while循环转换为一个语句实在太棒啦。


  列表理解


  我发现海象运算符对优化某些列表理解语句很有帮助。有两个标准1)需要过滤数据,2)存储taxingfunction的结果。让我们看一下传统的列表理解语句:


  scores=[22,54,75,89]
  valid_scores=[
  longFunction(n)
  forninscores
  iflongFunction(n)
  ]
  注意条件语句longFunction(n)了吗?注意longFunction()被调用了两次吗?这是海象运算符的候选。
  scores=[22,54,75,89]
  valid_scores=[
  resultforninscores
  result:=longFunction(n)
  ]


  在优化了的代码中,longFunction()仅被调用一次,隐含的降低了调用次数。


  处理返回的数据


  接下来是我认为海象运算符的最有用的实现。我经常使用称为iFormBuilder的移动数据收集软件。具体来说,请求记录(数据行)后,查询返回数据时,需要对其进行处理。这是我每天编写的代码块:


  #lookforfailedinspections
  #iftherearefailedinspections,assigntotechnicianrecords=api.readFailedRecords()
  iflen(records)>0:
  forrecordinrecords:
  api.assignToTechnician(record)
  我仔细阅读记录,认真谨慎的敲代码,以确保仅当返回列表有数据该代码块才执行:
  ifrecords:=api.readFailedRecords():
  forrecordinrecords:
  api.assignToTechnician(record)


  就可读性而言,此重构的破坏性最小,实际上,我发现在这种情况下,海象运算符更易于阅读。与前两个示例形成鲜明对比的是,前两个示例对可读性的影响较小,有利于省心和提高性能。


  总结


  综上所述,这篇文章就给大家介绍到这里了,希望可以给大家带来帮助。


  While循环


  虽然循环似乎是最常见的使用海象运算符的情况。在此处使用海象运算符的好处是可以在while语句中合并表达式和修饰符。我已经写过无数次无限循环了,因为我总是忘记在循环末尾写修改语句。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128816.html

相关文章

  • Python海象算符用法教程

      Python海象运算符提出的时间是比较得我早的,所以对一些具体的用法,还是需要进行琢磨的,那么,它的用法教程到底是什么呢?具体的用法,下文给大家详细的解答一下。  前言  大家好,我是闲欢,你们的老相识呀!  海象可谓是最大的哺乳动物了,有人称它是北半球的土著居民。它圆头,短而阔的嘴巴,粗大的鼻子,上犬齿形成长达40厘米-90厘米的獠牙,每只4公斤以上。雄海象体长可达4米,重2吨。海象喜群居,...

    89542767 评论0 收藏0
  • Python海象算符用法教程

      算法目前是比较火的一个领域了,其中,python作为算法的一种延伸,其应用范围还是比较的广泛的。那么,它其中有一个就是海象运算符,它的运算教程是什么呢?下面给大家一一的列举,大家要仔细的阅读哦。  前言  大家好,我是闲欢,你们的老相识呀!  海象可谓是最大的哺乳动物了,有人称它是北半球的土著居民。它圆头,短而阔的嘴巴,粗大的鼻子,上犬齿形成长达40厘米-90厘米的獠牙,每只4公斤以上。雄海象...

    89542767 评论0 收藏0
  • 【转】ng-class的用法

    摘要:但是有一点不好的只能够让一个元素拥有两种状态,虽然这么说基本也是满足所需了,我一般都用这个。简单直观对于第二种方式我曾经有疑惑这到底是什么用法这并非的用法,而是的技巧。 原文出处:https://segmentfault.com/a/11... 在开发中我们通常会遇到一种需求:一个元素在不同的状态需要展现不同的样子。 而在这所谓的样子当然就是改变其css的属性,而实现能动态的改变其属性...

    chenatu 评论0 收藏0
  • 【转】ng-class的用法

    摘要:但是有一点不好的只能够让一个元素拥有两种状态,虽然这么说基本也是满足所需了,我一般都用这个。简单直观对于第二种方式我曾经有疑惑这到底是什么用法这并非的用法,而是的技巧。 原文出处:https://segmentfault.com/a/11... 在开发中我们通常会遇到一种需求:一个元素在不同的状态需要展现不同的样子。 而在这所谓的样子当然就是改变其css的属性,而实现能动态的改变其属性...

    Render 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<