今天我下载了一个python来做一些简单的测试,奇怪的是python的if-else语句没有括号。
那么如何证明一条语句属于哪个分支呢?在我的测试中,当我改变缩进,结果是不同的。(b = b*2)是否意味着python根据用户的编码风格确定语句?那么,如果用户不遵循缩进规则怎么办?
a = 10
b = 20
i = 0
while i<5 :
if (a < 9) :
if (a < 5) :
b = b - 1
else :
b = b + 1
b = b*2
a = a - 1
i = i + 1
print (a, b, i)
a = 10
b = 20
i = 0
while i<5 :
if (a < 9) :
if (a < 5) :
b = b - 1
else :
b = b + 1
b = b*2
a = a - 1
i = i + 1
print (a, b, i)发布于 2013-08-30 14:14:12
缩进是Python语法的一部分。
放弃缩进与在C中丢弃{ }没有什么区别(也就是说,您最终得到的是损坏或错误的代码)
为什么?这个问题在设计与历史常见问题中得到了回答,
Guido认为,使用缩进进行分组是非常优雅的,对一般Python程序的清晰性有很大贡献。大多数人过了一段时间就会爱上这个功能。 由于没有开始/结尾括号,解析器所感知的分组和人工读取器之间不可能有分歧。有时C程序员会遇到这样的代码片段: 若(x <= y) x++;y-;z++; 如果条件为真,则只执行x++语句,但缩进会导致您不这么认为。即使是经验丰富的C程序员有时也会盯着它看很长时间,甚至对于x> y,也会想知道为什么y会减少。 因为没有开始/结束括号,Python不太容易发生编码风格的冲突。在C语言中,放置大括号有许多不同的方法。如果您习惯于阅读和编写使用一种样式的代码,那么在阅读(或要求编写)另一种样式时,您至少会感到有些不安。 许多编码样式将开始/结束括号放在一行中。这使得程序长得多,浪费了宝贵的屏幕空间,使得很难对程序进行良好的概述。理想情况下,一个功能应该适合在一个屏幕上(例如,20-30行)。与20行C相比,20行Python可以做更多的工作,这不仅仅是因为缺少开始/结束括号--缺乏声明和高级数据类型也是原因--但是基于缩进的语法确实有帮助。
此外,Python的历史还有一个关于缩进语法起源的附加故事。
发布于 2013-08-30 08:03:28
那么,如果用户不遵循缩进规则怎么办?
编码器必须遵循适当的缩进。唯一的其他选择是代码不能正常工作(或者是偶然的,但这本身并不是一种选择)。
发布于 2013-08-30 13:52:17
这就是为什么在if语句之后放一个冒号。在此之后,执行我所说的“缩进”操作,基本上是在下一行之后放置一个空格(或需要多少空格),然后键入在if语句中要运行的代码。如果不插入空格,python将产生一个错误,因为您添加了一个If语句,因此它希望您有某种缩进。例如:
if 4<7:
print("Hello")此外,也没有缩进规则。它可以是任意多行,但通常,由于您希望您的代码是可读的,我会缩进任何代码的最大空格为4。
https://stackoverflow.com/questions/18527870
复制相似问题