疑问
因为之前使用的是 PHP 和 JavaScript (PHP 使用的是 elseif
, JavaScript 使用的是else if
), 所以写 Python 代码时很自然写成这样:
if(score>=60):
print('C')
else if(score>=40):
print('D')
else:
print('E')
运行时报错: else if(score>=40)
的 else if
有错误: SyntaxError: invalid syntax
查阅语法书得知: Python 中 else if
必须写成 elif
这种方式, 不能写成else if
.
这种语法规定的确很违反常识: 我们知道 elif
是为 k的缩写, 但是没有想到非缩写的else if
竟然属于语法错误!
为什么?
可能的解释
C/C++和JavaScript 使用的是else if
, PHP 使用 elseif
, Python 使用 elif
.
所以说, Python 如果使用else if
, 理论上是可以的.
根据查阅的资料和我的猜测, 我认为, 之所以只允许使用 elif
是因为:
原因 1. (简单粗暴) 只是规定, 没有原因
elif 的含义和else if
的确一样, 但是 Python 只允许使用 elif
, 而不允许使用 else if
.
这是 Python 的规定, 也仅仅是规定而已, 没有为什么.
原因 2. (我的猜测) 更加明确的标识
有助于 “Python 解释器”区分中间的 else if
分支和最后的 else分支
:
“Python 解释器”碰到 else
时需要判断这个 else
后面是否有带 if
, 如果有, 表示中间的分支判断, 如果没有则表示最终的 else
分支. 这个判断过程拖累了效率. 而使用 elif
则非常明确, 不需要这个判断过程, 可以提高效率.
参考文章
StackOverflow — Python, why elif keyword?(opens new window) what’s the difference between “else if” and “elif” ?