既然讲到语句,那先说明一下语句块。语句块不是一种语句,是一组语句。在条件为真时执行或者多次的一组语句。主要注意其格式,用冒号来标识语句块的开始,块中每行缩进相同的量,一般4个空格(tab字符位置为8个空格,不使用)。简单的说就是通过缩排使语句成组的一种方式。
条件语句if
python中,False、None、0、""、()、[]、{}这些作为布尔表达式的时候都会为假。
if语句也很简单,在if和冒号之间的表达式为真,则执行;else在第一个语句块为假时执行。检查多个条件使用elif。在条件中的运算符就是比较运算符,出了比较大小等之外,还有几个需要注意:
x is y x和y是同一对象
x is not y x和y不是同一对象
x in y x是y容器(成员资格检查)
x not in y x不是y容器
==运算符判断两个对象是否相等,而is判断是否是同一个对象
断言,简单的说就是肯定某条件为真。使用assert关键字检查条件或检查函数参数属性等,在程序出现错误条件时,直接崩溃,有助于排错。
while循环与for循环
while循环,条件为真的时候重复执行一个代码块,当需要为一个集合的每一个元素执行一个代码块的时候就需要for循环了。能使用for循环,就尽量不使用while循环。
以两个例子来表示:
循环遍历字典
break跳出循环,而continue跳过循环体,不结束循环。
while True实现一个自己不会停止的循环,但是在循环内部加入满足条件break可以终止循环。
列表推倒式,可以说是循环的一种表达式。是利用其他列表来创建新的列表。
pass、del、exec
pass语句什么都不做,可以作为占位符使用。如果不用pass(这里是作占位符),则报错,python中空代码块是非法的。
当要删除一个字典或者序列的时候,可以使用置空(None),也可以使用del语句。它会移除一个对象的引用,也会移除这个名字的本身。
exec语句用与执行python程序相同的方式来执行字符串。通过增加in<scpoe>来实现放置代码字符串命名空间的字典。
内建函数eval对写在字符串中的表达式进行计算并返回结果。eval也可以使用命名空间,一个全局一个局部,全局必须是字典,局部可以是任何形式的映射。
exec或者eval的作用域跳用可以在其之上调用。