条件语句在编程语言中再寻常不过了,只有你须要编写程序,那么简直肯定会用到 if ... else ... 这样的条件语句进行条件判断。所以通用编程语言都会提供 if ... else ... 这样的语法。Python 也不例外,不过 Python 不只有 if ... else ... 这样的语法,它还提供了 for ... else ...、try ... except ... else ... 等这样的语法。明天咱们只探讨 for ... else ... 语法,来看看 Python 的 else 语句跟在 for 前面与跟在 if 前面有什么异同。

先看一段代码示例:

for i in [1, 2, 3]:    print(i)else:    print('done')

执行后果:

123done

如果不执行这段代码,只看这段代码的写法,兴许你会猜想它的执行后果应该只有 1、2、3 三个数,而没有 done。因为在 if ... else ... 的逻辑里,如果 if 的条件为真,那么就不会执行 else 语句下的代码块。
但依据打印后果来看,显然不合乎咱们的预期。带着疑难,咱们再看上面一段示例代码:

for i in []:    print(i)else:    print('done')

执行后果:

done

这次的后果只有一个 done,貌似这段代码看起来更正当些。因为 for 遍历的列表为空,所以条件不成立,那么就该执行 else 的逻辑,真的是这样吗?咱们接着看上面示例。
咱们晓得 for 语句块中能够呈现 continuebreak 两个关键字,那么咱们先来测试一下,如果 for 语句块中蕴含 continue 会是什么后果。

for i in [1, 2, 3]:    if i == 2:        continue    print(i)else:    print('done')

执行后果:

13done

这个后果和第一段代码示例差不多,只不过在 i == 2 的时候,跳过了本次循环,继续执行下一次循环。
最初咱们再来看看如果 for 语句块中蕴含 break 会呈现什么后果。

for i in [1, 2, 3]:    if i == 2:        break    print(i)else:    print('done')

执行后果:

1

依据下面这段代码的打印后果,我想你兴许曾经明确了 Python 中 for ... else ... 语句的执行特点。没错,实际上如果依照 if ... else ... 是互斥的逻辑来了解 for ... else ...,那么其实 for 语句块外部的 break 才真正跟 else 是一对条件语句。
如果 for 循环中执行了 break 语句,那么就不会再执行 else 语句块外部的代码了。

晓得了 Python 的 for ... else ... 语句的语法,然而它有什么用呢?我最开始接触 for ... else ... 语句的时候感觉它齐全没用,以至于我写了很久的 Python 代码都没有用到过,甚至简直曾经遗记了 Python 提供的这个语法。直到我开始写 ERP 我的项目的时候,我才发现 for ... else ... 的真正用处。因为写 ERP 零碎会遇到各种简单的业务需要,如果可能用 for ... else ... 解决问题,代码逻辑看起来就会清晰不少,这大大增加了我的项目的可维护性。

如果用 for 循环遍历一个可迭代对象,如果可迭代对象外部有一个元素符合条件,那么就执行一个逻辑,而后 break 掉,如果全副都不合乎,就执行 else 的语句去执行另一个逻辑,示例代码如下:

for i in 可迭代对象:    if 条件判断:        执行一个逻辑        breakelse:    执行另一个逻辑

这种代码显然比上面这种不必 for ... else ... 的写法可读性更强,并且更加合乎 Pythonic 的写法。

flag = Falsefor i in 可迭代对象:    if 条件判断:        执行一个逻辑        flag = True        breakif not flag:    执行另一个逻辑

以上,就是我对 for ... else ... 的了解以及应用领会,心愿在你遇到同样的问题时,可能对你有所帮忙。