else
是python
语言中活生生的备胎
,谁都是想用就用,不用也行。
1.if else语句
常规的if...else
语句我就不过多赘述了,这里提一下三元表达式,可以 有效减少代码量 ,使代码的整体逻辑更为清晰明了。
- 举个栗子
常规语句:
if conditions:
func1()
else:
func2()
使用三元表达式后:
# 条件满足时执行func1,条件不满足时执行func2
func1() if conditions else func2()
2.for else 语句
for...else
的执行逻辑是:如果for
循环正常结束,则执行else
中语句,注意如果 for
循环中嵌有 break
等导致for无法执行完毕,则 else
中的内容就不会执行,常用于设置flag
上面,如果循环过程中出现满足条件的情况就将flag
设置为True,反之则为False
,也可以有效减少代码量。
- 举个栗子
# 遍历
for item in container:
# 判断条件是否满足
if search_something(item):
# 条件满足,执行相关语句并跳出循环
process(item)
break
else:
# 遍历完并没有满足条件的情况,执行else语句
not_found_in_container()
3.try else语句
正确的讲,应该是try... except... else...finally...
语句,常常用于捕捉异常
。
- 举个栗子
try:
process()
print("try语句运行正常")
except Exception as e:
# 捕捉异常类型
print("try运行异常,捕捉到的异常为:", e)
else:
# 在无异常时执行else语句
print("try语句运行正常")
finally:
# 最后执行的语句
print("最后执行的语句")
这里顺带再提一下常用于异常处理的raise
模块和assert
语句。
3.1 raise
当程序出现错误会自动引发异常,当然也可以通过raise
显式引发异常。raise
语句执行后,raise
后的语句将不会执行。
- raise 语句有如下三种常用的用法:
1.raise:
单独
一个 raise。该语句引发当前上下文中捕获的异常(比如在except
块中),或默认引发RuntimeError
异常。 2.raise异常类
:raise 后带一个异常类。该语句引发指定异常类的默认实例。 3.raise异常对象
:引发指定的异常对象。 - 举个栗子
try:
1/0
except Exception:
raise NameError("变量未定义") from Exception
3.2 assert
在一个程序还未完善之前,与其让它在运行时才崩溃,不如在我们觉得可能出现异常的地方添加assert
语句,使得其在满足错误条件
时就提前崩溃
,提高我们的码力。
- 举个栗子
def func():
process()
# 如果conditions条件确实满足,则返回1,反之则输出异常
assert conditions
return 1