专栏名称: 马哥Linux运维
马哥linux致力于linux运维培训,连续多年排名第一,订阅者可免费获得学习机会和相关Linux独家实战资料!
目录
相关文章推荐
运维  ·  再见,CDN 巨头:Akamai 宣布 ... ·  3 天前  
51好读  ›  专栏  ›  马哥Linux运维

Python 中被忽略的 else

马哥Linux运维  · 公众号  · 运维  · 2018-05-03 18:00

正文

来源:Python中文社区

ID:python-china

else, 我们再熟悉不过了。对于一个python程序员来说,else往往都是配合if来使用的,像这样:

  1. a = '12'

  2. if a == '123':

  3.    print(a)

  4. else:

  5.    print('出错了!')

但是,python中的else并不只能用在if之后,so,这次我们讨论一下Python流程控制中的else。

else子句不仅能在if 语句中使用,还能在 for、while 和 try 语句中使用,这个语言特性不是什么秘密,但却没有得到重视。我们看一个例子:

  1. my_list = ['apple', 'pear', 'orange', 'banana']

  2. for item in my_list:

  3.    if item == 'banana':

  4.        print('Founded!')

  5.        break

  6. else:

  7.    raise ValueError('No banana flavor found!')

本例当中,循环最后找到了'banana',输出'Founded!',并且跳出循环,所以else字句并没有被执行。但如果,将代码修改一下,去掉列表中的'banana':

  1. my_list = ['apple', 'pear', 'orange']

  2. for item in my_list:

  3.    if item == 'banana':

  4.        print('Founded!')

  5.        break

  6. else:

  7.    raise ValueError('No banana flavor found!')

运行代码就会直接抛出错误!如果不使用else字句来完成上述功能,可能我们就需要设置控制标志了,像这样:

  1. my_list = ['apple', 'pear', 'orange']

  2. flag = True

  3. for item in my_list:

  4.    if item == 'banana':

  5.        print('Founded!')

  6.        flag = False

  7.        break

  8. if flag:

  9.    raise ValueError('No banana flavor found!')

很明显,这里使用了额外的变量flag和if语句。

while 和 for相类似,简单举个例子:

  1. a = 'apple'

  2. while a == 'banana':

  3.    pass

  4. else:

  5.    raise ValueError('No banana flavor found!')

下面看一下try:







请到「今天看啥」查看全文