Python,为什么是elif关键字?
我刚开始Python编程,我想知道Python,为什么是elif关键字?,python,keyword,Python,Keyword,我刚开始Python编程,我想知道elif关键字 我以前使用过的其他编程语言else if。有人知道Python开发人员为什么添加了额外的elif关键字吗 为什么不: if a: print("a") else if b: print("b") else: print("c") 很可能是语法上的糖。就像visualbasic的Wend。据我所知,它是用来避免过度缩进的。你可以写 if x < 0: print 'Negative' else: if
elif
关键字
我以前使用过的其他编程语言else if
。有人知道Python开发人员为什么添加了额外的elif
关键字吗
为什么不:
if a:
print("a")
else if b:
print("b")
else:
print("c")
很可能是语法上的糖。就像visualbasic的
Wend
。据我所知,它是用来避免过度缩进的。你可以写
if x < 0:
print 'Negative'
else:
if x == 0:
print 'Zero'
else:
print 'Positive'
如果x<0:
打印“负片”
其他:
如果x==0:
打印“零”
其他:
打印“正片”
但是
如果x<0:
打印“负片”
elif x==0:
打印“零”
其他:
打印“正片”
真是太好了
感谢您的参考: 关键字
elif
是“else-if”的缩写,有助于避免过度缩进
Python从Perl继承了这一点,在Perl中它被称为
elsif
在Python的例子中,else-if
作为两个独立的结构,就像在类似C的语言中一样,将是非常难看的,因为您必须使用带有两个缩进级别的else:if:
有争议的是,将两个关键字一起使用特殊大小写是否会更好(因此,如果是单个构造,则使用else,如not in
操作符)
PL/SQL还有elsif
,C预处理器将其拼写为elif
,以避免在战争中使用大括号^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
短得多,如果就是这样。使用else if
,使用elseif
,使用elsif
,使用elsif
,C预处理器和python使用 elif
。它们都没有错,只是选择了稍微不同的语法来做相同的事情。:Delif是其他语言中switch的某种替代品,但功能更强
例如,用C编写
switch (number){
case 1:
doA()
break;
case 2:
doB()
break;
case N:
doN()
break;
default:
doSomethingElse()
break;
}
if number == 1: doA()
elif number == 2: doB()
elif number == N: doC()
else: doSomethingElse()
开关(编号){
案例1:
doA()
打破
案例2:
doB()
打破
案例N:
唐()
打破
违约:
doSomethingElse()
打破
}
用Python编写
switch (number){
case 1:
doA()
break;
case 2:
doB()
break;
case N:
doN()
break;
default:
doSomethingElse()
break;
}
if number == 1: doA()
elif number == 2: doB()
elif number == N: doC()
else: doSomethingElse()
如果数字==1:doA()
elif编号==2:doB()
elif编号==N:doC()
其他:doSomethingElse()
正如您所看到的,elif
功能更强大,因为您可以将比开关中更复杂的语句放入,并且避免嵌套if/else
语句我发现它们有助于区分“else-if”和“final-else”
原因是在这种情况下,语法控制结构只对下一条语句进行操作,如果需要,下一条语句可以是大括号中的复合语句(例如,{x+=1;y+=1}
)
这意味着,一旦您实现了if
和else
,else-if
就自然地脱离了该语言的语法,而无需进一步的实现。要了解原因,请查看以下内容:
if (condition) {
if_body();
} else if (another_condition) {
else_if_body();
} else {
else_body();
}
这看起来像是一个if
,附加了一个else if
和一个else
,分别应用于复合语句。但实际上不是。这实际上是两个独立的if
语句,每个语句正好有一个else
大小写;第二个if
语句位于第一个if
语句
else如果{…}
真的被解析为应用于下一条语句的else
,这是一条if
语句(应用于复合语句{else\u if_body();}
。然后最后的else
绑定到前一条if
,这是第二条语句
下面是与解析方式更一致的内容1:
但事实证明,如果该语言确实直接实现了else if
作为if
语句的一级选项,那么它的行为将与第一个else
语句中的第二个独立if
语句完全相同!因此根本不需要麻烦实现else if
语言一旦实现了if
和else
,实现者就可以免费获得这种语法样式的else if
Python的语法不允许这种免费软件
C风格语法的程序员可以用else if
来思考,即使该语言只有if
具有零或一个else
,但这只是因为他们可以编写类似于我的第一个示例的代码,其格式对于人类读者来说与编译器来说不同
Python,OTOH,使用缩进来表示块结构,这迫使块结构在人类读者看来与在解释器2上看起来一样。一旦你用Python风格的语法得到了if
和else
,程序员仍然可以通过放置第二个if来编写与else-if行为相同的代码e> 第一个的else
中的语句。但结果如下所示:
if condition:
if_body()
else:
if another_condition:
else_if_body()
else:
else_body()
这看起来很难看,而且一旦你得到超过1或2个else-if,用else-if链来思考就比用else-if链复杂得多。因此,值得添加一个明确的语言功能,以恢复用else-if来思考的能力。尽管它在技术上使语言更加复杂,但实际上它使用语言来思考变得更加困难mpler,因此它的复杂性很好;在if
s嵌套else
s的内部有一个手动构造的链,读者必须手动读取所有代码,并验证除最后一个之外的每个else
都只包含一个if
语句,而ord中没有其他语句