前言
上篇文章我们讲了怎么遍历列表,很多同学之前可能学过C/C++或者Java,对代码格式可能不太重视。需要注意的是,C/C++或Java是通过 { }
确定循环体,所以无论你写的代码格式怎么不好看,你只要是把代码写在大括号 { }
里面,一般都没有问题。
然而,我们的 Python 是没有 { }
的,所以对格式要求非常严格以确定代码块(如,循环体、函数体等),so,你写 Python 代码时可不能那么简单粗暴了,要像对待女朋友一样,温柔地敲代码还得注意代码整洁。
本文就以遍历列表为例,讲讲 Python 代码格式需要注意些什么。
1. 缩进
Python 根据缩进(一个tab)来判断当前代码行与前一个代码行的关系。
举个栗子:有个魔术师列表,向列表中每位魔术师表达他们的表演非常好并且期待他们下次表演,最后向全体魔术师表达感谢。
magicians = ['Kelvin', 'Vicky', 'Howord']
for magician in magicians:
print(magician.title() + ", your trick is amazing!")
print("I can't wait to see u next trick, " + magician.title() + "\n")
print("Thank u, everyone, That was a great magic show!")
运行结果如图1-1:
第三行和第四行代码相对于 for
语句缩进了,所以这两句 print
属于循环体,而第六行代码的 print
语句和 for
语句没有缩进关系,所以它不属于循环体,因此只执行一次。
Python 通过使用缩进让代码更易读;简单地说,它要求你使用缩进让代码整洁和结构清晰。
当你开始编写 Python 代码时,需要注意一些常见的 缩进错误。例如,有时候会将不需要缩进的代码块缩进,而对于必须缩进的代码块却忘了缩进。
接下来会讲一些比较常见的 缩进错误。
2. 忘记缩进
对于位于 for
语句后面且属于循环组成部分的代码行,一定要缩进。
还记得我们 操作Python列表Ⅰ 文章里举的打印列表中每位魔术师名字的栗子嘛,现在我们故意不缩进看会发生什么:
magicians = ['Kelvin', 'Vicky', 'Howord']
for magician in magicians:
print(magician)
运行这段代码,哇哦,报错了,结果如图2-1:
Python 没有找到期望的缩进代码块时会报 IndentationError: expected an indented block
错误,通过查看这种错误提示,有助于你以后避开它们,以及在它们出现在程序中时进行修复。
3. 忘记缩进额外的代码行
有时候,循环能运行而不会报错,但结果可能会出乎意料。
试图在循环中执行多项任务,却忘记缩进其中的一些代码行时,就会出现这种情况。
例如,如果循环体中的第二行代码(它告诉每位魔术师,我们期待他的下次表演)没有缩进,代码就会写成这样:
magicians = ['Kelvin', 'Vicky', 'Howord']
for magician in magicians:
print(magician.title() + ", your trick is amazing!")
print("I can't wait to see u next trick, " + magician.title() + "\n")
就会出现如图3-1所示的结果:
第二个 print
语句原本是需要缩进的,但 Python 发现 for
语句后有一个语句是缩进的,因此这段代码语法上没有问题,Python 解释器没有报错。但与我们想要的结果不一样。
我们想要的是,要告诉每一位魔术师,我们期待他的下次表演,而不是仅仅只告诉 Howord
。
至于为什么最后会是 Howord
呢?
因为第二个 print
语句没有缩进,因此它只在循环结束后执行一次。由于循环结束后 magician
的最后值为 Howord
,因此只有他收到了消息 I can’t wait to see u next trick, Howord。
4. 不必要的缩进
如果你不小心缩进了不需要缩进的代码,Python会检查出这一点并且报错。
比如:
message = "Hello World!"
print(message)
print
语句不属于上一行代码,因此它不需要缩进,如果你不小心对其进行了缩进,Python 会聪明地指出你的错误,如图4-1:
还是我们熟悉的 IndentationError
错误。
为了避免意外缩进错误,请只缩进需要缩进的代码。
5. 循环后不必要的缩进
如果你不小心缩进了应在循环结束后执行的代码,这些代码将针对每个列表元素重复执行。
这会导致程序逻辑错误。
例如,循环体结束后的代码是要感谢全体魔术师精彩的演出,如果你把它缩进到了循环体中,代码会变成这样:
magicians = ['Kelvin', 'Vicky', 'Howord']
for magician in magicians:
print(magician.title() + ", your trick is amazing!")
print("I can't wait to see u next trick, " + magician.title() + "\n")
print("Thank u, everyone, That was a great magic show!")
由于第六行代码被缩进了,它将针对每一位魔术师执行一次,结果如图5-1:
这是一个逻辑错误,Python不知道你的本意,这段代码符合语法,所以程序没有报错,但结果却不如人意。
如果原本只应执行一次的操作执行了多次,请确定你是否不小心缩进了执行该操作的代码。
结尾语
很多人都认为格式不重要,在平常写代码的时候也不会在意,这会造成一个非常令人头疼的问题:别人很难看的懂你的代码并且一些细节的错误很难被发现。Python 这种强制规定代码格式的做法刚开始确定会让新手头疼,不习惯。但却从一开始帮助新手确立了良好的代码规范,这非常的棒!
不管你以后会不会从事 Python 开发,从今天起重视代码格式吧。
如果你在学习过程中有任何疑问,可以关注文章下方↓↓↓的公众号及时与我联系,我们相互讨论,共同学习。
最后,祝你学有所成。