我是python的新手,我知道Java,C,PHP。 Java,C,PHP使用{
和}
来定义条件语句的块,但Python
使用缩进而不是这些括号来定义块的条件陈述。
为什么python使用缩进而不是使用括号,使用缩进而不是使用括号有什么好处。
例如:
Python
if()
line 1
line 2
line 3
的Java,C,PHP
if()
{
line 1;
line 2;
line 3;
}
所以我的观点是,如果一个程序有很多嵌套条件,那么缩进会变得太大,如果换行是ON
,程序看起来会非常蠕动,如果它是关闭的则你必须使用滚动吧,为了阅读整行...
答案 0 :(得分:2)
压痕是你应该做的事情。如果你没有缩进你的C / Java / C ++ / C#,那你就做错了。
因此,无论如何你都要做缩进,输入所有那些愚蠢的花括号是什么意思?
此外,如果您的缩进变得如此之深以至于存在问题,那么您就不会很好地模仿您的代码。您应该使用多个较小的代码单元,而不是一个巨大的代码单元。
另请参阅:http://stromberg.dnsalias.org/~dstromberg/significant-whitespace.html
答案 1 :(得分:1)
它或多或少地硬连接到词法分析器 - :
之后的任何内容都被视为块语句,如果之后有新行,则必须缩进至少有一个空间。
PEP 8提供了一些关于Python正式样式指南的清晰度。简而言之 - 缩进使代码更易读。
The lexical analysis page也提供了一些洞察力:
连续线的缩进级别用于生成 使用堆栈的INDENT和DEDENT令牌如下。
在读取文件的第一行之前,会按下一个零 堆栈;这永远不会再被弹出。数字继续推进 堆栈将始终从下到上严格增加。在 每个逻辑行的开头,该行的缩进级别为 与堆栈顶部相比。如果它是平等的,没有任何反应。如果 它更大,它被推入堆栈,一个INDENT令牌 产生。如果它更小,它必须是出现的数字之一 在堆栈上;弹出堆叠中所有较大的数字, 并且对于弹出的每个数字,生成DEDENT令牌。在末尾 对于该文件,为每个剩余的数字生成DEDENT令牌 堆栈大于零。
正弦Python使用堆栈来保证缩进级别对于特定块是一致的,没有缩进会破坏词法分析器,并导致Python代码不被解释。
词法分析器的灵活性允许对此做(但不要这样做,否则Python程序员会鄙视你直到天的结束):
def foo(n):
for i in range(0, 10):
print i, i+1
i = 0
while i < 10:
print i
print i - 1
print i + 1
哦,如果你有太多嵌套语句 - 也许你应该考虑重构代码以便更清楚地阅读,并减少代码复杂度?
答案 2 :(得分:0)
提供有关代码块结构的可视提示并提高可读性。
答案 3 :(得分:0)
为了使一段代码(任何计算机语言)可读,人们使用约定。
我所知道的所有开发人员都使用缩进来处理条件代码,而不仅仅是Python 还有C,C ++,Java ...... 代码更具可读性,如果你得到很多缩进,可能代码中有一些奇怪的东西。
无论如何,在C,C ++,Java中......你需要括号(因为语法)。
Python非常棒:因为几乎所有编码器都缩进,不需要放置parenthesys:缩进是语法的一部分。 聪明!此外,您不能使用错误的缩进约定,因为缩进是语法的一部分。 大!
答案 4 :(得分:-1)
@theharshest在保持清晰度的同时说明了和更少的代码行。