`

Python 食谱--1.2: 不使用临时变量来交换值

阅读更多

问题

你想去交换一些变量的值,但是你不想使用临时变量。

解决
python的自动元组打包和解包可以做到这点:

a, b, c = b, c, a

a, b, c = b, c, a 
 


讨论
许多程序语言让你使用临时中间变量去交换变量的值。

temp = a
a = b
b = c
c = temp
 


但是python让你使用tuple的打包和解包来直接赋值

a, b, c = b, c, a 
 



在一个赋值中,python要求等号右边是一个表达式。 这里我们所写的b, c, a的确是表达式。要明确的是,它是一个元组, 有三个元素的不可变的序列。元组经常用圆括号括起来, 象(b, c, a)。 但是在这里除了逗号是有一些其他的意思以外(在一个函数调用中),圆括号不是必须的。通过打包元组的每一项,用逗号来建立一个元组.

在赋值语句的等号的左边,你可以正常的使用单个的对象。 这个对象能够是简单的一个标示符号(也就是众所周知的变量), 一个索引(例如alist[i] 和 adict['freep']), 一个属性的引用(如anobject.someattribute)等等。然而,python也让你在赋值语句的左边,使用几个用逗号分开的对象(变量,索引等等)。 那样的一个多赋值也被称为解包赋值。 当有两个或者更多的逗号分隔开的对象在一个赋值语句的左边, 右边的值必须是一个序列,而且它的数目要和左边逗号分隔的对象一样多。序列的每一项都被从左到右依次赋给相对应的目标值。


在这个配方中(译注:书的名字叫python食谱,所以每一节都称为一个配方:)),
我们有三个逗号分隔的目标对象在左边,所以我们需要右边有三个元素的序列,他们是有三个元素的被打包的元组。第一个目标(变量)得到第一个元素的值(它使用变量b的值), 第二个目标(b)得到第二个元素的值(它使用变量c的值), 并且第三个即最后一个目标(c)得到第三即最后一个元素(使用变量a的值)。 实际结果是一个在变量之间交换的值(你可以想想这个例子细节等价于一个旋转)


元组使用逗号打包,序列通过放置几个逗号分隔的目标到语句的左边来解包。他们都是有用的,简单的,普遍的机制。通过结合他们,你能简单地,优美地,自然地表达任何一组变量之间的值交换

分享到:
评论

相关推荐

    Python库 | python-ccp-1.2.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:python-ccp-1.2.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    python-devel-2.7.8-1.2.x86_64.rpm

    python-devel-2.7.8-1.2.x86_64.rpm

    activation.jar commons-email-1.2.jar mail.jar免费下载

    标题中的"activation.jar commons-email-1.2.jar mail.jar免费下载"涉及到的是Java邮件处理相关的库文件,这些在Java开发中用于实现电子邮件的发送和处理。让我们逐一解析这三个jar文件: 1. **activation.jar**:...

    Python库 | django-oscar-1.2rc1.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:django-oscar-1.2rc1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    Python库 | master-sake-1.2.tar.gz

    《Python库master-sake-1.2:深入解析与应用》 在编程世界里,Python以其简洁、易读的语法和强大的库支持赢得了广大开发者的心。"master-sake-1.2.tar.gz"是一个专为Python开发设计的库,它为用户提供了丰富的功能...

    Python库 | muser-1.2.1.2-py3-none-any.whl

    资源分类:Python库 所属语言:Python 资源全名:muser-1.2.1.2-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    pandas-stubs-1.2.0.43.tar.gz

    总的来说,Pandas-stubs-1.2.0.43提供了Pandas库的类型注解,为开发者带来了更安全、高效的编程体验。理解并善用这些类型注解,能有效提升数据分析项目的质量和效率,让代码更加健壮,减少错误的发生。

    Python库 | django-endless-pagination-vue-1.2.tar.gz

    《Python库深度解析:django-endless-pagination-vue-1.2》 在现代Web开发中,数据分页是不可或缺的功能,特别是在处理大量数据时。`django-endless-pagination-vue-1.2` 是一个集成Python的Django框架与前端Vue.js...

    简明Python教程-V1.2版.pdf

    Python 编程语言教程 本资源是一个 Python 编程语言的教程,涵盖了 Python 语言的基础知识、安装、基本概念、运算符与表达式、控制流、函数、模块、数据结构、面向对象的编程、输入&输出、异常、Python 标准库等...

    python-jsonpatch-1.2-4.el7.noarch.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

    Python库 | geoshape-geonode-1.2.tar.gz

    《Python库geoshape-geonode-1.2:地理空间数据处理与后端开发的利器》 在IT行业中,Python作为一种强大的开发语言,因其简洁的语法和丰富的库支持而备受青睐。当我们谈论“geoshape-geonode-1.2.tar.gz”这个资源...

    python2.5--安装包

    安装完成后,可以通过命令行输入`python --version`或`python2.5 --version`来验证Python 2.5是否正确安装。 需要注意的是,尽管Python 2.5是一个经典版本,但它已经不再被官方维护,安全性和兼容性方面可能存在...

    Python库 | jenkins-yml-1.2.tar.gz

    总结来说,`jenkins-yml-1.2.tar.gz`是一个与Jenkins相关的Python库,它可能包含了用于配置和控制Jenkins作业的YAML文件以及Python代码。通过这个库,开发者能够更加便捷地在Python环境中管理和操作Jenkins,提升CI/...

    python2-docker-2.4.2-1.2.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    Python库 | crack-engine-CraXell-0.0.1.2.tar.gz

    标题中的“Python库 | crack-engine-CraXell-0.0.1.2.tar.gz”表明这是一个基于Python的库,名为CraXell,版本号为0.0.1.2,它被压缩成一个tar.gz文件。在IT行业中,Python库是开发者用来扩展Python功能的工具集合,...

    python2-multilib-1.2-2.el7.centos.noarch.rpm

    官方离线安装包,亲测可用

    ctower-env-1.2-RELEASE.tar.gz

    在Linux环境下,我们通常使用“tar -zxvf ctower-env-1.2-RELEASE.tar.gz”命令来解压这个文件。解压后,会得到一个名为“ctower-env-1.2”的目录,其中包含ctower-env的所有组成部分。 安装过程中,我们需要注意...

    Python库 | http-server-base-1.4.1.2.tar.gz

    《Python库:深入理解http-server-base-1.4.1.2》 在信息技术日新月异的时代,Python作为一门强大且易学的编程语言,因其丰富的库支持而在开发领域备受青睐。今天我们将聚焦于一个名为`http-server-base-1.4.1.2`的...

    Python库 | astropy-helpers-1.2rc1.tar.gz

    《Python库深度解析:astropy-helpers-1.2rc1》 在Python的世界里,库扮演着至关重要的角色,它们极大地扩展了Python的功能,使得开发者可以高效地处理各种复杂任务。今天我们要深入探讨的是一份名为“astropy-...

    PyPI 官网下载 | pysha-0.0.1.2-py3-none-any.whl

    4. 使用`pip`(Python的包管理器)来安装这个库,命令通常是`pip install pysha-0.0.1.2-py3-none-any.whl`。 5. 安装完成后,你可以在Python脚本中通过`import pysha`来使用它提供的功能。 **Python库的管理和版本...

Global site tag (gtag.js) - Google Analytics