Python入门笔记(七) 进阶语法

第七篇学习笔记,内容包含Python中一些进阶语法,如条件控制,循环控制等。

条件控制

if...elif...else语句进行条件控制。每一个条件之后都需要使用冒号,每一个代码块都要使用缩进来标志。如:

1
2
3
4
5
6
if a == 1:
b = 1
elif a == 2:
b = 2
else a == 3:
b = 3

python中没有switch...case型的语句。
条件控制可以缩写在一行之中,形成所谓的“三目运算符”。其表达形式为val1 if exp else val2,即如果expTrue则运算结果为val1expFalse则运算结果为val2。如:

1
2
3
4
>>> b = 9
>>> a = 1 if b > 5 else 2
>>> a
1

循环语句

while...或者for...来实现循环。

while语句

在使用while语句时采用以下的格式:

1
2
3
4
while <judgement>:
<statements>
else:
<statements>

后面的else是在条件为False的时候执行的,相当于一个收尾语句,收完这个尾之后退出整个循环体。如:

1
2
3
4
5
6
7
8
9
>>> a = 1
>>> while a == 1:
... print("a is 1")
... a = a + 1
... else:
... print("a is not 1")
...
a is 1
a is not 1

要执行一个死循环的时候可以这么写:

1
2
while True:
...

使用break语句来终止一个循环。若使用break中止,则else部分不会执行。
如果循环体只有一条语句,那么可以将while和这条语句写在一行。不过这一般没有什么用处。
python中没有do...while循环。

for语句

for结构的一般形式如下:

1
2
3
4
for <variable> in <seq>:
<statements>
else:
<statements>

for循环到末尾时就执行else处的语句并退出整个循环体。如:

1
2
3
4
5
6
7
8
9
10
11
list1 = [1, 2, 3]
for i in list1:
pass
else:
print(i)
# 输出为3
for i in range(10):
pass
else:
print(i)
# 输出为9

使用break语句来终止一个循环。若使用break中止,则else部分不会执行。
有一些函数经常会和for循环搭配使用。如:
range()函数。该函数产生一系列等距的数。其语法为range(start, stop[, step]),三个参数均为整数,表示从start开始按step的步长到stop为止。如:

1
2
3
for i in range(0, 10, 4):
print(i)
# 输出为0 4 8

enumerate函数。该函数可以生成一系列的index-item对,即索引-元素对(为元组)。该函数一般需要传入2个参数,第一个参数为可迭代对象;第二个参数是下标的初始值,缺省值为0。一般的使用方法如下:

1
2
for index, item in enumerate(thelist, start):
...

注意,这个初始值并不是指从哪里开始,而是计数时从哪一个值开始计数。比如初始值为1,那么就按1, 2, 3, …的方式数数;初始值是0,就按照0, 1, 2, …的方式数数。

断言

使用assert语句进行断言,如果断言失败就抛出AssertionError的异常。

try结构

此部分在异常部分会进行介绍。

del语句

可以使用del语句删除对象引用(即解除变量名称和具体数据之间的绑定),也可以移除数据结构中具体的某部分(如列表中的值,字典的键值对等)。它不直接删除值,因为值会通过垃圾回收的方式进行移除。

del语句的语法是del var1[,var2[,var3[....,varN]]]],这意味着可以一次性删除多个目标。示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>> v = 1
>>> v
1
>>> del v # 删去某个对象引用
>>> v
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'v' is not defined
>>> s = [1, 2, 3, 4, 5]
>>> del s[3: 5] # 删除切片的方式删除一整段
>>> s
[1, 2, 3]
>>> u, v, w = 1, 2, 3
>>> del u, v, s[0: 1] # 删除多个目标