一文搞懂Python程序语句_python简单语句和复合语句的区别在哪

Python 也具有复合语句,即相关语句形成的语句组,其中包括简单和(可能)附加的复杂语句。例如,根据表达式的值(对个人来说,可能是对“今天的天气晴朗吗”之类问题的答案),一个复合语句可能执行不同的操作或者对一个操作重复多次。这一描述似乎有些类似于前一段的流控制描述。当然应该类似,因为流控制语句就是复合语句。

一个复合语句包括一个流控制指令,后跟一个冒号(:),然后再是一个程序语句块。语句块由一个或多个简单语句和复合语句组成。清单 2 中提供了一个简单的伪代码例子。

清单 2. 一个伪代码例子展示了简单语句和复杂语句

该语法看起来既熟悉又陌生,并且两种感觉来自相同的事情:缩进。在列大纲或步骤时,您可能会使用不同级别的缩进来分隔每一项,使得列出来的东西更加清晰可读。Python 遵循这一模型,使用缩进来分隔代码块与程序的其余部分。其他编程语言使用特殊的字符来区分代码块,比如基于 C 的语言中的花括号({ 和 })。这些其他语言也鼓励程序员使用缩进,以改善程序的可读性。

另一方面,Python 需要缩进以指示代码块。如果没有正确地缩进,Python 解释器会抛出异常。可以使用制表符来标记缩进,但是一般推荐使用空格。(为了一致性,我总是使用 4 个空格来缩进代码块。)理由很简单:空格字符只有一种解释方式。另一方面,制表符可以有不同的解释方式,根据所使用的平台或工具,可以解释为 2 个、4 个、6 个甚至 8 个空格。

增强程序可读性

缩进要求可能是 Python 的一个基本指导原则 —— Python 程序应该易于读和理解 —— 的最佳例子。但是这就跟工具一样,顽固分子也可能会编写晦涩的 Python 代码。例如,螺丝起子是用来起螺丝的,但是有时您也可能用来打开油漆盖子。

两个其他特性有助于编写易读的 Python 程序,并且这两者都遵循前面所用的书的比喻。首先,书中的行不会延伸到页面外面,都有固定的长度。其次,书中的行不是以特殊符号(比如分号)结束。这两个特性都贯穿于编写 Python 程序的过程中。

如果某个程序行太长,可以在文件中的下一物理行继续这一行。没有硬性规定一个代码行应该多长。但是一般限制为 80 个字符,这容易适合大多数显示器的一个打印页面。有几种方式来扩展超过一行的代码语句:

三引号字符串可以扩展到多个行。

括号中的表达式可以扩展到多个行。

可以使用继续字符(\)来在多行分割语句。

在 Python 中,不需要使用特殊字符(或符号)来指示语句的结束。这与有些语言不同。例如,基于 C 的语言使用分号(;)来指示代码行的结束。然而,有时候需要在一行放多个程序语句,例如初始化变量时。在这样的情况下,可以使用分号来分隔单个语句。

清单 3 中演示了这两种技术。

清单 3. 演示 Python 的可读性技术

注意清单 3 中扩展到多个行的程序语句是如何缩进以改善可读性的。在本例中,缩进不是强制性的,就跟一个复合语句一样。但是正如您所见,缩进改善了程序的外观,因而强烈推荐进行缩进。

if 语句

最简单的流控制语句是 if 语句,它的基本语法在清单 4 中的伪代码中演示了。if 语句在一个布尔表达式计算为 True 时执行一个程序语句块。if 语句支持一个可选的 else 子句,指示当布尔表达式计算为 False 时应该处理的程序语句块。

清单 4. if 语句的基本语法

如果您使用过其他编程语言,那么该语法看起来可能既熟悉又陌生。相似之处在于 if 语句的一般格式、名称、用于确定如何分支语句执行流的表达式的计算,以及用于处理当表达式计算为 False 时的情况的 else 子句。但是有两个方面是完全特定于 Python 的:带有冒号字符的 if 和 else 语句的终止,以及 if 和 else 块中语句的缩进。正如所提到的,这两个特征是 Python 中流控制语句所必需的。

在清单 5 中,一个简单的 if/else 条件测试一个给定的数字是奇数还是偶数,并打印出结果。

清单 5. 一个简单的 if 语句例子

一个似乎有些混乱的地方是 if 语句后面每一行前面的三个点(…)。当键入 if 语句和终止的冒号,并按键盘上的回车键时,Python 解释器就知道您输入了一个复合语句。因此,它就将提示符从三个大于符号(>>>)改为三个点(…)。因为 Python 需要缩进以错开当表达式计算为 True 或 False 时应该执行的语句块,所以两个 print 语句都缩进了 4 个空格。

if 语句(以及本文后面讨论的 elif 子句和 while 循环)中的表达式可以很复杂。它可以包括多个使用 Python 中支持的不同关系运算符的子表达式。而子表达式又可使用 and、or 和 not 逻辑运算符组合起来。本系列的第一篇文章“探索 Python,第 1 部分:Python 的内置数值类型”,包含更多关于布尔表达式和 Python 中不同关系和逻辑运算符的信息。

至此,已经看到了 if 语句可以如何用于根据一个特定布尔表达式的值,来执行两个程序语句块中的其中一个。然而在有些情况下,可能需要更多的选择。幸运的是,Python 提供了 if 语句的一个简单扩展。提供的解决方案非常简单:给 else 子句添加一个额外的 if 语句。结果是一个 else if 语句,简写为 elif,如清单 6 所示。

清单 6. 使用 elif 语句

本例只包含一个 elif 语句,而实际中可根据程序需要包含任意多个。尽管它不是最优的解决方案,但是多个 elif 语句可以用于模拟其他一些语言中的 switch case 语句。

while 循环

Python 中的第二种流控制语句是 while 循环,它在一个表达式计算为 True 时执行一个程序语句块。while 循环与 if 语句一样,支持一个可选的 else 子句,其中包含一个当表达式计算为 False 时执行的程序语句块。但是对于 while 循环,这意味着在循环终止后,else 子句中的代码被执行一次(参见清单 7 中的伪代码)。

清单 7. while 循环的伪代码

理解了 if 语句之后,while 循环理解起来就相当简单了。但是一定要知道,循环一直要执行到表达式计算为 False。这意味着循环体中执行的程序语句必须要改变表达式的值,否则循环将无法结束。如清单 8 所示。

清单 8. while 循环的一个简单例子

该例演示了几件事情。首先,它在一行中组合了变量初始化和变量修改:在本例中是 i 和 x 变量。其次,分别使用缩写形式的运算符 += 和 -= 来递增 i 的值和递减 x 的值。在本例中,循环开始时 x 的值为 10。每通过一次循环,x 的值就递减 1。最后,x 的值为 0,此时循环退出,并执行 else 子句中的代码,打印出两个变量的值。

while 循环(与本文后面介绍的 for 循环一样)支持三种附加语句:

continue

break

pass

continue 和 break 语句分别用于在 while 循环中继续下一次循环或中断循环。这两个语句通常放在 if 语句体中,以便由一个特殊的条件触发 continue 或 break 操作。break 语句的一个特殊特性是,它完全中断循环,并跳转到循环下面的任一个 else子句。

pass 语句什么都不做。它用作一个占位符,即在需要一个语句,但是程序逻辑不需要操作时使用。清单 9 中演示了这三种语句。

清单 9. 使用 continue、break 和 pass 语句

文末有福利领取哦~

👉一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。img

👉二、Python必备开发工具

img
👉三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
img

👉 四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
img

👉五、Python练习题

检查学习结果。
img

👉六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
img

img

👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 11
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值