在其他语言中的标准控制流概念在python中也是通过一些条件逻辑、循环等关键字的方式实现的。
一、if、elif和else
if语句是最广为人知的控制流类型。它检查一个条件是否为True。
一个if语句可以接多个elif代码块和一个else代码块,如果所有的elif条件均为False,则执行else代码块;
如果某个条件为True,则后面的elif和else代码块则不会执行。
二、for循环
for循环用于遍历一个合集(例如列表或元组)或一个迭代器。
使用continue关键字可以跳过continue后面的代码进入下一次循环:
sequence = [1,2,None,4,None,5]
total = 0
for value in sequence:
if value is None:
continue
total += value
上面的代码表示对列表中的非None值进行累加。
使用break关键字可以结束一个for循环:
sequence = [1,2,0,4,6,5,2,1]
total_until_5 = 0
for value in sequence:
if value == 5:
break
total_until_5 += value
以上代码会对列表元素进行累加,直到5出现。
break关键字只结束最内层的for循环,而外层的for循环会继续运行。
如果集合或迭代器中的元素是一个序列(比如元组或列表),它们可以在for循环语句中很方便地通过拆包成为变量。
三、while循环
while循环会在条件符合时一直执行代码块,直到条件判断为False或显式地以break结尾时才结束:
x = 256
total = 0
while x>0 :
if total > 500:
break
total += x
x = x//2
四、pass
pass就是python中的‘什么都不做’语句。它用于在代码段中表示不执行任何操作,之所以需要它,是因为python使用了缩进来分隔代码块。
五、range
range函数返回一个迭代器,该迭代器生成一个等差整数序列;
起始、结尾、步进(可以是负值)可以传参给range函数;
但是,range产生的整数包含起始却不包含结尾,range常用于根据序列的索引遍历序列;
尽管你可以使用函数,比如list函数将range产生的整数储存在其他数据结构,但通常默认的迭代器形式就是你想要的;
虽然range产生的序列可以是任意大小,但在任意给定时间内的内存使用量是非常小的。
六、三元表达式
python中的三元表达式允许你将一个if-else代码块联合起来,在一行代码或一个语句中生成数据;
在if-else代码块中,是按顺序逐个执行的。
虽然我们可以使用三元表达式来压缩代码量,但请注意如果条件以及真假表达式非常复杂,可能会牺牲可读性。