Python海象运算符代码分析及知识点总结

1、在判断条件下允许操作。在一定程度上简化了代码,但降低了可读性。

i = len((l := [1, 2, 3]))  # 先对l进行赋值,在对i赋值
while (i := i - 1) >= 0:  # 允许在表达式中运算
    print(l[i], end=' ')

2、python中的海象操作符较少使用,允许在判断中进行简单的赋值操作,没有其他特殊意义,只需了解其存在即可。

l = [1, 2, 3]
i = len(l) - 1
while i >= 0:
    print(l[i], end=' ')
    i -= 1

知识点扩充

语法

海象运算符的语法格式是:

(variable_name := expression)

这是一个新的赋值运算符,跟我们常见的 = 类似,一个变量名后面跟一个表达式。

用于 if-else 条件表达式

常规写法:

a = 5
if a > 1:
    print('do sth!')

升级写法:

if a := 5 > 1:
    print('do sth!')

用于 while 循环

常规写法:

n = 3
while n:
    print('do sth!')
    n -= 1

升级写法:

n = 3
while (n := n - 1) + 1:
    print('do sth!')

这里加1是因为执行输出前n就减1了。

读取文件

常规写法:

fp = open("test.txt", "r")
while True:
    line = fp.readline()
    if not line:
        break
    print(line.strip())
fp.close()

升级写法:

fp = open("test.txt", "r")
while line := fp.readline():
    print(line.strip())

在合适的场景中使用海象运算符可以降低程序复杂性,简化代码,甚至可以提高程序的性能。

到此这篇关于Python海象运算符代码分析及知识点总结的文章就介绍到这了,更多相关Python海象运算符的使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python开发技巧之海象运算符的三种运用方式

    目录 1. 第一个用法:if/else 2. 第二个用法:while 3. 第三个用法:推导式 Python 版本发展非常快,如今最新的版本已经是 Pyhton 3.9,即便如此,有很多人甚至还停留在 3.6 或者 3.7,连 3.8 还没用上. 很多 Python 3.8 的特性还没来得及了解,就已经成为旧知识了,比如今天要说的海象运算符. 海象运算符是在 PEP 572 被提出的,直到 3.8 版本合入发布. 它的英文原名叫 Assignment Expressions,翻译过来也就是 赋值

  • Python海象运算符的用法教程

    目录 前言 语法 用法 用于 if-else 条件表达式 用于 while 循环 读取文件 不适用场景 变量赋值 加减法 Lambda函数中的赋值表达式 争议 关键字 运算符名称 总结 前言 大家好,我是闲欢,你们的老相识呀! 海象可谓是最大的哺乳动物了,有人称它是北半球的“土著”居民.它圆头,短而阔的嘴巴,粗大的鼻子,上犬齿形成长达40厘米-90厘米的獠牙,每只4公斤以上.雄海象体长可达4米,重2吨.海象喜群居,数千头簇拥在一起. 海象两眼眯得像缺乏活力的老头子,它们爱睡懒觉,一生中大多时间是

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

    目录 前言 While 循环 列表理解 处理返回的数据 总结 前言 随着Python 3.8的发布,赋值表达式运算符(也称为海象运算符)也发布了.运算符使值的赋值可以传递到表达式中.这通常会使语句数减少一个. 例如: my_list = [1,2,3] count = len(my_list) if count > 3: print(f"Error, {count} is too many items") # when converting to walrus operator.

  • Python海象运算符超详细讲解

    目录 介绍 语法 用法 if 语句 while 循环 while 循环逐行读取文件 while 循环验证输入 推导式 三元表达式 总结 介绍 海象运算符,即 := ,在 PEP 572 中被提出,并在 Python3.8 版本中发布. 海象运算符的英文原名叫Assignment Expresions,即赋值表达式. 它由一个冒号:和一个等号=组成,即:=.而它被称作walrus operator(海象运算符),是因为它长得像一只海象. 语法 海象运算符的语法格式如下: variable_name

  • Go/Python/Erlang编程语言对比分析及示例代码

    本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性,不过最主要的原因是这几个我比较熟悉. Go的很多语言特性借鉴与它的三个祖先:C,Pascal和CSP.Go的语法.数据类型.控制流等继承于C,Go的包.面对对象等思想来源于Pascal分支,而Go最大的语言特色,基于管道通信的协程并发模型,则借鉴于CSP分支. Go/Python/Erlang语言特性对比 如<编程语言与范式>一文所说,不管语言如何层出不穷

  • python scrapy简单模拟登录的代码分析

    1.requests模块.直接携带cookies请求页面. 找到url,发送post请求存储cookie. 2.selenium(浏览器自动处理cookie). 找到相应的input标签,输入文本,点击登录. 3.scrapy直接带cookies. 找到url,发送post请求存储cookie. # -*- coding: utf-8 -*- import scrapy import re class GithubLoginSpider(scrapy.Spider): name = 'githu

  • Python实现统计代码行的方法分析

    本文实例讲述了Python实现统计代码行的方法.分享给大家供大家参考,具体如下: 参加光荣之路测试开发班已三月有余,吴总上课也总问" 咱们的课上了这么多次了大家实践了多少行代码了?".这里是一个一脸懵逼的表情.该怎么统计呢?一个个文件数当然不可取,能用代码解决的事咱们坚决不动手.最近在网上刷题时也正好遇到有这么一道题,所以决定撸一撸. 题目:有个目录,里面是你自己写过的程序,统计一下你写过多少行代码.包括空行和注释,但是要分别列出来. 首先分析一下思路捋一下大象装冰箱的步骤,从一个给定

  • Python中eval带来的潜在风险代码分析

    0x00 前言 eval是Python用于执行python表达式的一个内置函数,使用eval,可以很方便的将字符串动态执行.比如下列代码: >>> eval("1+2") >>> eval("[x for x in range(10)]") [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 当内存中的内置模块含有os的话,eval同样可以做到命令执行: >>> import os >>&g

  • Python yield与实现方法代码分析

    yield的功能类似于return,但是不同之处在于它返回的是生成器. 生成器 生成器是通过一个或多个yield表达式构成的函数,每一个生成器都是一个迭代器(但是迭代器不一定是生成器). 如果一个函数包含yield关键字,这个函数就会变为一个生成器. 生成器并不会一次返回所有结果,而是每次遇到yield关键字后返回相应结果,并保留函数当前的运行状态,等待下一次的调用. 由于生成器也是一个迭代器,那么它就应该支持next方法来获取下一个值. 基本操作 # 通过`yield`来创建生成器 def f

  • python中delattr删除对象方法的代码分析

    最近我们针对对象属性这块,介绍了不少关于测试属性的方法.在进行一系列测试后,我们发现这个属性并不需要,这时候就要用到删除的功能.在python中可以选择delattr函数删除对象的属性,基于它的删除功能,是否能扩展到删除的对象的方法上,在我们对delattr函数进行全面了解后,展开实例的测试. 1.说明 函数作用用来删除指定对象的指定名称的属性,和setattr函数作用相反. 不能删除对象的方法. 2.参数 object -- 对象. name -- 必须是对象的属性. 3.返回值 无. 4.实

随机推荐