《python基础教程(第二版)》学习笔记 语句/循环/条件(第5章)
《python基础教程(第二版)》学习笔记 语句/循环/条件(第5章)
print 'AB', 123 ==> AB 123 # 插入了一个空格
print 'AB', 'CD' ==> AB CD # 插入了一个空格
print 1,2,3 ==> 1 2 3
print (1,2,3) ==> (1, 2, 3)
#在脚本中以下ABCD连在一起输出
print 'AB',
print 'CD'
import somemodule #导入模块
from somemodule import somefunction #导入函数
from somemodule import function1,function2... #导入函数
from somemodule import *
module1.open() #使用模块中函数
module2.open()
import math as foobar #为模块提供别名
foobar.sqrt(4)
from math import sqrt as foobar #为函数提供别名
foobar(4)
序列解包
x,y,z=1,2,3; print x,y,z ==> 1 2 3
x,y,z=1,2,3; x,y=y,z; print x,y ==> 2 3
x=1,2,3; a,b,c=x; print a,b,c ==> 1 2 3
d={'key1':'value1','key2':'value2'}; key,value=d.popitem(); print key,value ==> key2 value2
链式赋值
x=y=z={'key1':'value1'}; x is y ==> True
x=y=z={'key1':'value1'}; x==y ==> True
增量赋值
x+=1; x*=1;
可以用tab或空格分层缩进代码;推荐用四个空格来缩进。用Tab缩进更方便,比空格更快。
: 表示语句块的开始
布尔值:True, False, bool()
这些被看为False: False, None, 0, "", (), [], {}
True==1 ==> True
False==0 ==> True
True+False+4 ==> 5
bool('ABC') ==> True
bool('') ==> False
bool(3) ==> True
bool(0) ==> False
if expression:
block1
if expression:
block1
else:
block2
if expression1:
block1
elif expression2:
block2
else:
block3
比较运算符
x==y 相等运算符
x!=y 不相等运算符
x is y 同一性运算符
x is not y
x in y 成员资格运算符
x not in y
0<age<100 # python可以这样用
'ab'=='ab' ==> True
'ab'=='cd' ==> False
12==34 ==> False
x=y=[1,2]; x==y ==> True
x=y=[1,2]; x is y ==> True
x=y=[1,2]; z=[1,2]; x is z ==> False
x=y=[1,2]; z=[1,2]; x==z ==> True
'ABC'<'ABC' ==> False
[1,2]<[2,1] ==> True
布尔运算符:
and, or, not
断言
age=-1; assert 0<age<100, 'NOTE'
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
age=-1; assert 0<age<100, 'NOTE'
AssertionError: NOTE
while expression:
block
for item in itemset:
block
range函数包含下限,不包含上限;
range(0,3) ==> [0, 1, 2]
range(3) ==> [0, 1, 2]
遍历字典
d={'key1':'value1','key2':'value2'};
for key in d:
print key,d[key]
for key,value in d.items():
print key,value
并行迭代
a=[1,2,3]; b=['a','b','c']; zip(a,b) ==> [(1, 'a'), (2, 'b'), (3, 'c')]
编号迭代
for index, string in enumerate(strings):
if 'xxx' in string:
strings[index]='NewValue'
反转和排序迭代
sorted([3,1,2]) ==> [1, 2, 3]
x=[1,2,3]; list(reversed(x)) ==> [3, 2, 1] # reversed返回可迭代对象
break结束循环
continue进行下一次循环
while True:
block1
if expression:
break
block2
for item in items:
block1
if expression:
break
block2
else:
block3 # 当for执行完毕,并且没有执行过其中的break,此时执行block3
列表推导式
[x*x for x in range(3)] ==> [0, 1, 4]
[x*x for x in range(3) if x%2==0] ==> [0, 4]
[(x,y) for x in range(3) for y in range(3)] ==> [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
pass # 占位符,类似于空语句
del # 删除对象
exec # 执行一个字符串
exec "print 'ABC'" ==> ABC
from math import sqrt; scope={}; exec 'sqrt=1' in scope; sqrt(4); scope['sqrt'];
eval 求值,类似于 exec
eval(raw_input(""))
1+1
2
scope={}; scope['x']=2; scope['y']=3; eval('x*y',scope) ==> 6