0

今天我下载了一个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)
4

3 回答 3

4

那么如果用户不遵守缩进规则怎么办?

编码器必须遵循正确的缩进。唯一的其他选择是代码无法正常工作(或意外工作,但这本身并不是一个真正的选择)。

于 2013-08-30T08:03:28.693 回答
1

缩进是 Python 语法的一部分。

丢弃缩进与丢弃{ }C 语言没有什么不同(即,您最终会得到损坏或不正确的代码)

为什么?这个问题在设计和历史常见问题解答中得到了解答

Guido van Rossum 认为使用缩进进行分组非常优雅,并且对普通 Python 程序的清晰性有很大贡献。大多数人会在一段时间后学会喜欢这个功能。

由于没有开始/结束括号,因此解析器和人类读者感知的分组之间不会有分歧。偶尔C程序员会遇到这样的一段代码:

if (x <= y)
        x++;
        y--;
z++;

如果条件为真,则仅执行 x++ 语句,但缩进会导致您不相信。即使是有经验的 C 程序员有时也会盯着它看很长时间,想知道为什么即使 x > y y 也会递减。

因为没有开始/结束括号,Python 不太容易出现编码风格的冲突。在 C 中有许多不同的方式来放置大括号。如果您习惯于阅读和编写使用一种风格的代码,那么在阅读(或被要求编写)另一种风格时,您至少会感到有些不安。

许多编码风格将开始/结束括号单独放在一行上。这会使程序变得相当长,并浪费宝贵的屏幕空间,从而更难获得程序的良好概览。理想情况下,一个函数应该适合一个屏幕(比如 20-30 行)。20 行 Python 可以比 20 行 C 做更多的工作。这不仅仅是因为缺少开始/结束括号——缺少声明和高级数据类型也是原因——而是基于缩进的语法当然有帮助

Python的历史还有一个关于缩进语法起源的附加故事

于 2013-08-30T14:14:12.193 回答
0

这就是为什么在 if 语句之后放置一个冒号的原因。在那之后,你做我所说的“缩进”,基本上你在下一行之后放置一个空格(或者你想要多少个空格),然后在 if 语句中输入你想要运行的代码。如果你不插入空格,那么 python 会出现错误,因为你添加了一个 if 语句,所以它希望你有某种缩进。例如:

if 4<7:
 print("Hello")

此外,没有缩进规则。它可以是任意多行,但通常因为您希望您的代码可以被人类阅读,所以我缩进任何代码的最大空格是 4。

于 2013-08-30T13:52:17.623 回答