python关键字elif表示两个单词缩写_Python,为什么是elif关键字?

具有类似于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();

}

这看起来像一个附加了else if和else的if,每个都应用于一个复合语句。但事实并非如此。这实际上是两个独立的if语句,每个语句正好有一个else情况;第二个if语句位于第一个if语句的else主体内。

else if { ... }实际上被解析为应用于下一个语句的else,这是一个if语句(应用于复合语句{ else_if_body(); })。最后一个else与前一个if绑定,后者是第二个。

这里有同样的东西,更符合它的解析方式:if (condition) {

if_body();

} else {

if (another_condition) {

else_if_body();

} else {

else_body();

}

}

但事实证明,如果语言直接实现else if作为if语句的一级选项,那么它的行为将与第一个else语句中的第二个独立if语句完全相同!所以根本不需要麻烦实现else if;语言实现者一旦实现了if和else,就可以使用这种语法样式免费获得else if。

Python的语法不允许这种免费。

C风格语法的程序员可以用else if来思考,即使这种语言只有if只有0个或1个else,但这仅仅是因为他们可以编写类似于我的第一个示例的代码,这种代码的格式在人类读者看来与编译器不同。

Python,OTOH,使用缩进来表示块结构,这迫使块结构在人工读取器中看起来与在解释器中一样。一旦你有了Python风格语法中的if和else,程序员仍然可以编写与else-if行为相同的代码,在第一个if的else中放入第二个if语句。但结果是这样的:if condition:

if_body()

else:

if another_condition:

else_if_body()

else:

else_body()

这看起来很难看,而且当你得到1或2个以上的其他if时,考虑其他if链要复杂得多。因此,有必要添加一个显式的语言特性,以恢复使用else-if进行思考的能力。尽管它在技术上使语言更加复杂,但实际上它使从语言的角度考虑问题变得更简单,因此它的复杂性很好;在elses内部有一个手工构建的嵌套ifs链的情况下,读者必须手动读取所有代码,并验证除最后一个之外的每个else都包含一个if语句而不是其他语句,以便得出结论,整个序列等价于按顺序检查的线性条件链,并为成功的第一次检查执行一些代码。

那么。我们已经看到,使用类似于C的语法的语言也可以使用else if,因为它们是免费的。这就是它存在的原因。具有类似Python语法的语言必须显式地执行一些操作,以获得可以用作else if的构造。他们为什么选择elif?这是武断的,你得问问做决定的人。

然而,Python并没有发明elif,早在Python出现之前,它就存在于其他语言中。所以我猜当他们必须实现一个else-if的显式结构时,他们只是选择了一个程序员已经熟悉的结构。

1从技术上讲,这就是那些真正认真对待总是使用带控制结构的支架的人tures应该写下他们的代码。;)

2您当然可以为此构造反例,但这是基于缩进语法的一般思想。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值