Python中的赋值表达式

这篇具有很好参考价值的文章主要介绍了Python中的赋值表达式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

赋值表达式(assignment expression)是Python 3.8新引入的语法,它会用到海象操作符(walrus operator)。

这种写法可以解决某些持续已久的代码重复问题。a = b是一条普通的赋值语句,读作a equals b,而a := b则是赋值表达式,读作a walrus b。

这个符号为什么叫walrus呢?因为把:=顺时针旋转90º之后,冒号就是海象的一双眼睛,等号就是它的一对獠牙。这种表达式很有用,可以在普通的赋值语句无法应用的场合实现赋值,例如可以用在条件表达式的if语句里面。

赋值表达式的值,就是赋给海象操作符左侧那个标识符的值。

举个例子

students = ["小明", "小红", "小李", "小光"]
if len(students) >= 3:
    print("学生人数超过3人,人数为{}".format(len(students)))
else:
    print("学生人数不超过3人,人数为{}".format(len(students)))

上面例子中有三处用到了len(students),显然,这样会出现重复获取值的情况。

在Python中,一般的做法是,先定义一个变量count来存放len(students)的值,再使用该变量来进行之后的操作,如下:

students = ["小明", "小红", "小李", "小光"]
count = len(students)
if count >= 3:
    print("学生人数超过3人,人数为{}".format(count))
else:
    print("学生人数不超过3人,人数为{}".format(count))

然而,在实际开发中,我们定义的如上面例子中count的变量值有多个,而且逻辑语句也会相对复杂很多,有时候很难第一时间发现这些变量值在逻辑语句中的作用。Python引入赋值表达式正是为了解决这样的问题。

下面使用海象操作符来改写上面的例子

students = ["小明", "小红", "小李", "小光"]
if (count := len(students)) >= 3:
    print("学生人数超过3人,人数为{}".format(count))
else:
    print("学生人数不超过3人,人数为{}".format(count))

新代码虽然只省了一行,但读起来却清晰很多,因为这种写法明确体现出count变量只与if块有关。

这个赋值表达式先把:=右边的值赋给左边的count变量,然后对自身求值,也就是把变量的值当成整个表达式的值。由于表达式紧跟着if,程序会根据它的值是否满足条件来决定该不该执行if块。

这种先赋值再判断的做法,正是海象操作符想要表达的意思。

同样,我们也可以在列表推导式中使用赋值表达式

students = ["小明", "小红", "小李", "小光"]
count_list = [count := len(students), count ** 2, count ** 3]
print(count_list)

在实际开发中,比较常用到的正则表达式也可以使用赋值表达式

import re
#学习中遇到问题没人解答?小编创建了一个Python学习交流群:711312441
desc = "name: Tony"
if m := re.match("name: (.*)", desc):
    name = m.group(1)
    print(name)

总之,如果某个表达式或赋值操作多次出现在一组代码里面,那就可以考虑用赋值表达式把这段代码改得简单一些。文章来源地址https://www.toymoban.com/news/detail-746398.html

到了这里,关于Python中的赋值表达式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第六章(7):Python中的函数—lambda表达式

    是一种匿名函数的定义方式,它可以替代函数定义的方式,使代码更加简洁和易读。Lambda表达式的语法形式为:lambda 参数列表: 表达式,其中参数列表和表达式都是可选的,但是在大多数情况下都需要用到它们。Lambda表达式通常被用在需要传递函数对象作为参数的函数中,也

    2024年02月08日
    浏览(41)
  • Python中的三元运算符:简洁高效的条件表达式

    什么是三元运算符 三元运算符是一种简洁高效的条件表达式,用于根据条件的真假来返回不同的值。它是一种特殊的运算符,由三个操作数组成,形式为 [结果为真的值] if [条件] else [结果为假的值] 。 Python中的三元运算符语法 Python中的三元运算符的语法如下: 三元运算符的

    2024年01月19日
    浏览(47)
  • SIMetrix 8.30 电路仿真软件用表达式为元器件值赋值的方法

    SIMetrix/SIMPLIS为一款结合速度与精度的模拟电路仿真软件,SIMetrix基于SPICE模型,可精确仿真瞬态;而SIMPLIS则是对器件进行分段线性建模,将一个完整的系统定义成完整的线性电路拓扑循环序列,因此可获得很高的速度。 用SIMetrix/SIMPLIS仿真软件进行电路仿真时经常需要多次修改

    2024年02月16日
    浏览(47)
  • (python)正则表达式提取字符串中的各种信息(持续更新)

            在日常数据处理过程,拿到一段文字,进行关键信息的提取.总而言之,翻来覆去地用到几种处理方法.这些都需要用到正则去进行通用处理.比如提取关键信息,诸如时间,日期,地址等. 那么我们要根据关键信息的特征去提取. 数字提取:可以用正则表达式来提取数字,包括整

    2024年01月24日
    浏览(39)
  • chatgpt赋能python:Python分组匹配:了解正则表达式中的分组匹配技巧

    在 Python 中,正则表达式是一种重要的文本处理工具,它可以帮助我们在字符串中匹配、查找和替换特定的文本模式。其中,分组匹配是正则表达式的重要特性之一,它可以将匹配的结果按照指定的规则进行分组,以便更好地处理和使用。在本文中,我们将介绍 Python 中的分组

    2024年02月06日
    浏览(32)
  • Python使用正则表达式识别代码中的中文、英文和数字实例演示

    在文本处理和数据分析中,有时候需要从代码中提取出其中包含的中文、英文和数字信息。正则表达式是一种强大的工具,可以帮助我们实现这一目标。本文将分三个部分详细介绍如何使用正则表达式在 Python 中识别代码中的中文、英文和数字。 在 Python 中,可以使用 Unicod

    2024年02月14日
    浏览(42)
  • 【从零学习python 】63.正则表达式中的re.Match类及其属性和方法介绍

    当我们调用 re.match 方法、 re.search 方法,或者对 re.finditer 方法的结果进行迭代时,拿到的数据类型都是 re.Match 对象。 这个类里定义了相关的属性,可以直接让我们来使用。 属性和方法 说明 pos 搜索的开始位置 endpos 搜索的结束位置 string 搜索的字符串 re 当前使用的正则表达

    2024年02月11日
    浏览(44)
  • Python re.findall()中的正则表达式包含多个括号时的返回值——包含元组的列表

    当 re.findall() 中的正则表达式包含多个括号时,返回值是一个列表,其中每个元素都是一个元组。这个元组的长度与正则表达式中括号的数量相同,元组中的每个元素都是与相应括号中的模式匹配的文本。 输出:

    2024年02月19日
    浏览(37)
  • 华为OD机试 - 提取字符串中的最长合法简单数学表达式(Java & JS & Python & C)

    题目描述 提取字符串中的最长合法简单数学表达式,字符串长度最长的,并计算表达式的值。如果没有,则返回 0 。 简单数学表达式只能包含以下内容: 0-9数字,符号+-* 说明: 所有数字,计算结果都不超过long 如果有多个长度一样的,请返回第一个表达式的结果 数学表达

    2024年02月02日
    浏览(36)
  • 【自然语言处理】NLP入门(一):1、正则表达式与Python中的实现(1):字符串构造、字符串截取

       语言 是一种使用具有共同处理规则的沟通指令的广义概念,这些指令可以通过视觉、声音或触觉等方式传递。语言可以分为自然语言、动物语言和计算机语言。    自然语言 是人类发展过程中形成的一种信息交流方式,它包括口语和书面语,并且反映了人类的思想。

    2024年03月12日
    浏览(120)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包