5.1赋值语句
(1)序列解包
Python支持迭代赋值。即把一个序列或可迭代对象中的元素同时赋值给多个变量,如果等号右侧含有表达式,会把所有表达式的值先计算出来,然后再进行赋值。
#多个变量同时赋值
>>> x, y, z = 1, 2, 3
>>> v_tuple = (False, 3.5, ‘exp’)
>>> (x, y, z) = v_tuple
>>> x, y, z = v_tuple
#可以对range对象进行序列解包
>>> x, y, z = range(3)
#使用迭代器对象进行序列解包
>>> x, y, z = iter([1, 2, 3])
#使用可迭代的map对象进行序列解包
>>> x, y, z = map(str, range(3))
#交换两个变量的值
>>> a, b = b, a
#sorted()函数返回排序后的列表
>>> x, y, z = sorted([1, 3, 2])
#字符串也支持序列解包
>>> a, b, c =’ABC’
>>> x = [1, 2, 3, 4, 5, 6]
#切片也支持序列解包
>>> x[:3] = map(str, range(5))
>>> x
[‘0’, ‘1’, ‘2’, ‘3’, ‘4’, 4, 5, 6]
(2)链式复制
将同一个值赋给多个变量
x=y=somefunction();
(3)增量赋值
x+=1等价于x=x+1
5.2条件语句
(1)条件表达式
①关系运算符:>、<、==、<=、>=、!=
• 可以连续使用:a<range<100
• 在Python3.x中不支持<>运算符(表示!=)
• 字符串可以按照字幕顺序排列进行比较(一个字幕的顺序值可以用ord函数查到)
②算术运算符:+、-、*、/、//、%、**
③测试运算符:
• 成员运算符:in、not in
• 同一性运算符:is、is not
④逻辑(布尔)运算符:and、or、not
• 短路求值(惰性求值):布尔运算符只有在需要求值时才进行求值
• 利用短路求值实现三元运算符: a if b else c(相当于C中的b?a:c)
⑤位运算符:~、&、|、 ^、 <<、>>
(2)选择结构
①单分支选择结构
if
test
:
statement
②双分支选择结构
写法1
if
test
:
statement1
else:
statement2
写法2
statement1
if
test
else
statement2
③多分支选择结构
Python中没有switch..case语句
if
test1
:
statement1
elif
test2
:
statement2
elif
test3
:
statement3
else:
statement4
④嵌套选择结构
if
test1
:
statement1
if
test2
:
statement2
else:
statement3
elif
test4
:
statement4
else:
statement5
5.3循环语句
(1)while循环
• while循环一般用于循环次数难以提前确定的情况,也可以用于循环次数确定的情况;
while
test:
<
statements
>
else
:
<
statements
>
• 为了优化程序以获得更高的效率和运行速度,在编写循环语句时,应尽量减少循环内部不必要的计算,将与循环变量无关的代码尽可能地提取到循环之外。
• 对于使用多重循环嵌套的情况,应尽量减少内层循环中不必要的计算,尽可能地向外提。
• while true可以开启一个无限循环,使用
CTRL+C
来退出当前的无限循环
(2)跳出循环
• break语句
• 在while循环和for循环中都可以使用。
• 执行break语句将使整个循环提前结束。
• continue语句
• 执行continue语句将终止当前循环,提前进入下一次循环。
• pass语句
• Python pass是空语句,是为了保持程序结构的完整性。pass 不做任何事情,一般用做占位语句,如下实例
(3)else分句
• 在Python中,while循环和for循环都可以带else子句
• 如果循环因为条件表达式不成立而自然结束(不是因为执行了break语句而结束),则执行else结构中的语句
• 如果循环是因为执行了break语句而导致循环提前结束,则不执行else中的语句
while
test1
:
statement1
if
test2
: break
# Exit loop now, skip “else”below
if
test3
: continue
# Go to top of loop now, to test1
statement2
else:
statement3 # Run if we didn’t hit a”break”
(4)for循环
• for循环可以遍历可迭代对象的项目,如一个列表或者一个字符串。这种遍历称为迭代(Iteration)。
• 优先使用for循环而非while循环
for
<
variable
>
in
<
sequence
>:
<
statements
>
else
:
<
statements
>
• 如果需要遍历数字序列,可以使用内置range()函数。它会生成数列。
5.4其他语句
pass语句
Python pass是空语句,是为了保持程序结构的完整性。
pass 不做任何事情,一般用做占位语句(如果不加pass将会报错)。
一个什么都不做的if语句:
iftrue
:
pass #do nothing
else
:
pass #do something
一个空类:
class aa:
pass
a = aa()