乐趣区

关于python:Python-forelse-语句

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

先看一段代码示例:

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

执行后果:

1
2
3
done

如果不执行这段代码,只看这段代码的写法,兴许你会猜想它的执行后果应该只有 1、2、3 三个数,而没有 done。因为在 ifelse … 的逻辑里,如果 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')

执行后果:

1
3
done

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

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

执行后果:

1

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

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

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

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

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

flag = False
for i in 可迭代对象:
    if 条件判断:
        执行一个逻辑
        flag = True
        break

if not flag:
    执行另一个逻辑 

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

退出移动版