美文网首页Python与数据分析
Python3.8的海象算子

Python3.8的海象算子

作者: 清梦载星河 | 来源:发表于2020-01-31 19:51 被阅读0次

摘自机器之心

前几个月发布的 Python 3.8 包含了一项重要的新功能,即海象算子。如果合理运用,该算子能有效地提升 Python 程序的执行效率。本文将对海象算子的作用和效果进行介绍,并会通过示例演示其使用方法和不适用的场景。

海象算子(Walrus Operator),或称命名表达式算子,符号为":="。

海象算子

海象算子能为表达式中的一个变量赋值。先看看一段代码:

# code 0.0:
countries = ["Indea", "USA", "France", "Germany"]
if len(countries) < 5:
    print("Length of  countries is " + len(countries))

在上面的代码中,我们调用了两次len()函数,那么可以避免重复计算吗?我们做一下改进:

# code 0.1:
country_size = len(countries)
if country_size < 5:
    print("Length of countries is " + country_size)

还有改进的空间吗?可以不用单独一行来给country_size赋值吗?

# code 0.2:
if country_size := len(countries) < 5 :
    print("Length of countries is " + country_size)

这里就用到了海象算子,可以在if语句中直接执行声明和赋值操作。

2. 代码行数和复杂度的平衡

先看一段示例代码:

# code 1.0:
powers = [get_count(), get_count()**2, get_count()**3]
def get_count():
    "Fetches count of records from a database"

上面的示例代码是通过多次调用一个高成本函数get_count()来填充一个列表。常用做法就是先将函数返回结果赋值给一个变量,然后直接操作变量来填充列表。现在可以用海象算子直接声明赋值变量。

# code 1.1:
powers = [result := get_count(), result**2,result**3]
def get_count():
    "Fetches count of records from a database"

从code1.1的示例代码中可看出,海象算子可以减少代码行数和降低代码的复杂度。

3. 解决理解低效的问题

# code 2.0:

employees = []
for id in employee_ids:
    employee = fetch_employee(id)
    if employee:
        employees.append(employee)

上述代码基于一个条件填充列表,需要多次循环。我们可以使用海象算子进行简化:

employees = [ result for id in employeee_ids if (result := fetch_employee(id))]

相关文章

  • Python3.8的海象算子

    摘自机器之心 前几个月发布的 Python 3.8 包含了一项重要的新功能,即海象算子。如果合理运用,该算子能有效...

  • python特性

    Python3.8 海象运算符:= fstring增强 函数增强/和* Python3.9 字典合并 字典更新 字...

  • Python3.8新特性 | 赋值表达式——海象操作符(:=)

    Python3.8加入了一种新的语法:=,它把值付给变量然后作为较大表达式的一部分。把:=成为海象操作符是因为这个...

  • python3.8特性之一、海象运算符:=

    背景 我们往往会有这样的需求: 上面这种实现没问题,但是如果我们想要追求代码的简洁,比如说,我不想要额外一句代码来...

  • 海象

    野兽的长牙是跟骑士的利剑交锋都会擦出火花的。 倘若长达七八十公分的獠牙只是用来挖掘埋在海沙底下的蛤蜊的话,不免让人...

  • python3.8 新功能大揭秘(一):海象运算符

    前几个月发布了 Python 3.8 是最新的版本,这个版本带来了许多语法改变、内存共享、更有效的序列化和反序列化...

  • 简笔画|十七~海底世界

    海豚| 海象| 河马|

  • 海象的预言

    回首千年前的极点, 海象度母, 贴腹长跪于肃杀的冰原。 她用两秉寒玉佛牙, 凿下一个千禧的预言: 我海象族啊, 有...

  • Ubuntu 修改默认 Python3 版本

    目的:将ubuntu系统默认python3版本改为python3.8 安装 Python3.8 修改默认版本 查看...

  • 海象之死

    其实我的要求并不多,我只要一寸立足之地就够了。 沙滩,连针一样的缝隙也没有了。 我努力攀上悬崖,只盼望高崖有我栖息...

网友评论

    本文标题:Python3.8的海象算子

    本文链接:https://www.haomeiwen.com/subject/geqnthtx.html