Python中的else

很久不写代码,果然一上手就容易犯一些低级的错误。在写上一篇博客程序之后,开始做写一些异常处理的代码(毕竟网络连不上啦,页面不存在啦很常见),竟然写错了else的用法。顺手查了Python官方文档,发现相比其他语言,Python的 else 除了用在 if 里,还有 try、for、while等语言块里

循环中:

Loop statements may have an else clause; it is executed when the loop terminates through exhaustion of the list (with for) or when the condition becomes false (with while), but not when the loop is terminated by a break statement. This is exemplified by the following loop, which searches for prime numbers:

大概就是讲,循环中可以包括 else 分句,当循环结束时( for 运行完,或者 while 判定 false )会执行 else 中的语句,但是通过 break 跳出的循环不会执行 else 中的内容。

try异常捕获中:

When used with a loop, the else clause has more in common with the else clause of a try statement than it does that of if statements: a try statement’s else clause runs when no exception occurs, and a loop’s else clause runs when no break occurs. For more on the try statement and exceptions, see Handling Exceptions.

The use of the else clause is better than adding additional code to the try clause because it avoids accidentally catching an exception that wasn’t raised by the code being protected by the tryexcept statement.

在异常处理中,try 后面跟 else 也是很常见的。当 try 并没有捕捉到异常时,else 中的语句就会运行。这样可以明确的区分捕捉到异常和没有异常的情况。注意区分 finally,它无论 try 是否捕捉到异常都会执行。

这里还有两篇中文的blog讲解else在异常捕获循环中的使用。

PS:越来越感觉,Python语言上有问题,直接去python.org找对应的文档是最方便的了,包括各种Python包的使用。查文档,搜Google,上StackOverflow,加上自己的思考,能解决绝大多数的问题了(其实更重要的是准确定位问题。)

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注