《Python编程从0到1》笔记2——表达式竟然也有副作用
在表达式的求值过程中,对状态的改变称为表达式的副作用。Python中内建的各种运算符(此处是狭义的含义,如加减乘除比较等运算符,并不包含用户自定义的运算符或函数)是没有副作用的,但各种函数调用时常带有副作用(比如各种输入输出函数)。在使用带有副作用的表达式构建复杂表达式时要格外留意,因为这可能带来程序员容易忽视的行为。如:
if expA and expB : ...
这条语句用来测试表达式A B都为真的条件。expA and expB的计算具有短路性质,即如果A为假则整个表达式已然能够判断为假,表达式B不会被求值。如果表达式B包含函数调用,则意味着该函数不一定被调用。
不过总体说来,Python中副作用带来的麻烦并不多。程序员只要不在复杂表达式中嵌套带有副作用的函数即可避免这些容易混淆的情形。这种编码风格也能很容易遵守。[1]
[1] C程序员往往需要利用各种副作用(比如自增、赋值)写出简洁紧凑的程序,但在Python中,由于语法本身已经提供足够的简洁性,这门语言被刻意设计成避免这些写法。
这是一本很有趣很有趣的Python入门书,墙裂推荐。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
什么是云原生?如何解决容器原生存储问题?
什么是云原生? “云原生”是一个被人们经常使用但不是定义很清楚的一个术语。我们认为“云原生应用”应有以下特点: 他们不是单独的,它们是离散的、在逻辑上可分离的几个部分,每个单独打包和部署。通常这些都是以容器为单元完成,在某些情况下就像普通的Linux软件包一样。 在同一台计算机上不应强制运行其全部软件堆栈。它们可以在任何地方、任何服务器或任何区域内计划运行。它们还应该能够在分布式部署系统中相互感知。 通过增加特定计算逻辑的并行实例,应用程序应能够根据需求快速扩展。 应用程序所依赖的、用于协调通信或状态保存的服务应该能够根据需要以编程和动态的方式进行探知和修改,且与其物理基础设施无关。 通过明确定义云原生的含义,我们可以更好地定义各种云原生技术组件的职责划分。这些云原生应用组件的实例包括调度软件、网络软件以及存储软件。 如何解决容器原生存储问题? Portworx开发了一种新的存储体系结构—容器定义型存储。它基于高度分布式环境开始构建。调度软件将其作为容器进行部署和管理,并将存储作为本地卷插件扩展到Docker容器中。 Portworx提供了一种现代化的DevOps应用部署方式。我们可以...
- 下一篇
《Python编程从0到1》笔记3——欧几里得算法
本节以欧几里得算法(这是人类历史上最早记载的算法)为示例,向读者展示注释、文档字符串(docstring)、变量、循环、递归、缩进以及函数定义等Python语法要素。 欧几里得算法:“在数学中,辗转相除法,又称欧几里得算法(Euclidean algorithm),是求最大公约数的算法。辗转相除法首次出现于欧几里得的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》。两个整数的最大公约数是能够同时整除它们的最大的正整数。辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。”---《维基百科.辗转相除法》 在实际操作中,可以使用带余数除法替代减法以减少步骤。下面是使用流程图绘制的算法示意图:图 1.2 欧几里得算法流程图 在程序设计实践中,很少针对简单的程序绘制流程图。因为对于熟练的程序设计者来说,代码本身足以清晰地说明程序的执行流程。流程图往往用于描述大的软件系统的工作原理,或者用来辅助不够结构化的语言(如汇编语言)。 根据前述算法描述,计算252和105的最大公约数的计算步骤如下:1.252除以105余42,问题转为...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8