Python,为什么elif关键字?
我刚开始Python编程,我想知道关于elif关键字。 
 其他编程语言我用过之前使用else if 。 有没有人有一个想法,为什么Python开发人员添加额外的elif关键字? 
为什么不:
 if a: print("a") else if b: print("b") else: print("c") 
	
 最有可能的是它的语法糖。 像Visual Basic的Wend一样。 
据我所知,这是为了避免过度缩进。 你可以写
 if x < 0: print 'Negative' else: if x == 0: print 'Zero' else: print 'Positive' 
但
 if x < 0: print 'Negative' elif x == 0: print 'Zero' else: print 'Positive' 
就好多了
感谢文档的参考:
关键字
elif是“else if”的缩写,对于避免过多缩进非常有用。
 类C语言的语言可以得到else if是免费的而不必实现它的话。 
 原因在于,语法控制结构简单地在下一个语句上操作,如果需要(例如{ x += 1; y += 1 } ),它可以是括在大括号中的复合语句。 
 这意味着,一旦你实现了if和else , else if就是自然而然地脱离了语言的语法,而不需要进一步的实现。 看看为什么,看看这个: 
 if (condition) { if_body(); } else if (another_condition) { else_if_body(); } else { else_body(); } 
 这看起来像一个if与else附加, else if和一个附加,每个应用于一个复合语句。 但事实上并非如此。 这实际上是两个单独的if语句,每个语句都与另一个case完全else ; 第二个if语句在第一个if语句的else中。 
  else if { ... }被真正parsing为else语句, if语句就是一个if语句(应用于复合语句{ else_if_body(); } ;然后最后的else绑定到前面的if ,这是第二个。 
下面是按照如何parsing1 :
 if (condition) { if_body(); } else { if (another_condition) { else_if_body(); } else { else_body(); } } 
 但是事实certificate,如果语言直接实现else if作为if语句的第一类选项,它将performance得与第一个else语句中的第二个独立if语句完全相同 ! 所以没有必要打扰执行else if有的话; 语言实现者在使用这种风格的语法的时候可以得到else if ,一旦他们实现了if和else 。 
Python的语法不允许这个免费赠品。
  C语言的语法程序员可以用else if的方式来思考 ,即使这个语言只有在else才有,或者仅仅是因为他们可以像我的第一个例子那样编写代码,而且格式化的方式看起来不一样而不是编译器。 
  Python,OTOH,使用缩进来表示块结构,这迫使块结构看起来与读者相同,就像它对解释器2一样 。 一旦你得到了if和else的Python风格的语法,程序员仍然可以编写与else相同的代码if通过在第一个else语句中放置第二个if语句。 但是,这样看起来像这样: 
 if condition: if_body() else: if another_condition: else_if_body() else: else_body() 
 这看起来很丑陋,而且一旦你得到1个或2个以上的if,就比其他if-if链更加复杂。 所以值得添加一个明确的语言特性来取回用else-if来思考的能力。 尽pipe在技术上使语言更加复杂,但实际上它使得语言的思维更加简单,所以它的复杂性很高。 用一个手工构build的嵌套链if在else的阅读器必须手动读取所有的代码,并validation除了最后一个除了最后一个包含一个if语句,没有别的,为了得出结论,整个序列相当于一个按顺序检查线性条件链,并执行一些代码以执行第一个检查成功。 
 那么。 我们已经看到,类C语言的语言else if能够与else if语言一起使用的else if ,也可以免费获得。 这就是为什么存在的原因。  Python类语法的语言必须明确地做一些事情来得到一个可以用作else-if的结构。 他们为什么selectelif ? 这是任意的; 你必须真正问问做决定的人。 
 然而,Python并没有发明elif ,早在Python出现之前,它就已经在其他语言中出现了。 所以我猜想 ,当他们必须实现一个明确的else-if构造时,他们只需select一个程序员已经熟悉的构造。 
1从技术上讲,这就是人们总是认真地总是使用支配结构的支架来编写代码的方式。 ;)
2你当然可以为此构造反例,但这是基于缩进的语法的一般概念。
为了避免支持^ H ^ H ^ H ^ H ^ Helse如果战争。
 在C / C ++中,如果你还有else if ,你可以用很多不同的风格来构造你的代码: 
 if (...) { ... } else if (...) { ... } if (...) { ... } else if (...) { ... } if (...) { ... } else if (...) { ... } // and so on 
 相反,如果有一个elif ,那么这样的战争永远不会发生,因为只有一种写elif 。 而且, elif比else if要短得多。 
 就是那样子。  Javascript使用else if , php使用elseif , perl使用elsif ,C预处理器和python使用elif 。 没有一个是错的,他们只是select稍微不同的语法来做同样的事情。  :d 
我发现它们有助于区分“其他”和“其他”。
elif是其他语言的开关替代品,但功率更大
例如在你写的C中
开关(数字){
 情况1:
    DOA()
   打破;
 情况2:
    DOB()
   打破;
 情况N:
    DON()
   打破;
 默认:
    doSomethingElse()
   打破;
 }
在Python中你写
如果数字== 1:doA() elif number == 2:doB() elif number == N:doC() else:doSomethingElse()
 正如你所看到的, eliffunction更强大,因为你可以把更复杂的语句放在switch中,另外避免嵌套if/else语句 
  Python从Perl中inheritance了这个名字,叫做elsif 。 
 在Python的情况下, else if像C这样的两种独立的结构类似的语言将是相当丑陋的,因为你必须有else: if:有两个缩进级别。 
 将这两个关键字组合在一起会更好是非常有争议的(所以else if只有一个结构,就像not in运算符一样。 
  PL / SQL也有elsif ,而C预处理器有拼写elif 。