命名惯例
在python3.0中print函数的形式为:
print([object,…][, sep=’ ‘][, end=’\n’][, file=sys.stdout])
在这个正式的表示中,方括号中的项是可选的,并且可能会在一个给定的调用中省略,并且=后面的值都给出了参数的默认值。这个内置的函数把字符串sep所分隔开的一个或多个对象的文本表示,后面跟着的字符串end,都打印到流file中。sep是在每个对象的文本之间插入的一个字符串,如果没有传递的话,默认的是一个单个的空格,传递一个空字符串将会抑制分隔符。end是添加在打印文本末尾的一个字符串,如果没有传递的话,默认是一个\n换行符。传递一个空字符串将会避免在打印的文本的末尾移动到下一个输入行。file指定了文本将要发送到的文件,默认为sys.stdout。
第12章 if测试和语法规则
if语句的格式:
if <test1>:
<statements1>
elif <test2>:
<statements2>
else:
<statements3>
if/else三元表达式
A = Y if X else Z
X= A or B or C or None
会把X设为A,B以及C之中第一个非空的对象,或者如果所有对象都为空就设为None。
第13章 while和for循环
while格式
while <test>:
<statements1>
<break>
<continue>
<pass>
else:
<statements2>
可选的else部分(当控制权离开循环而又没有碰到break语句时会执行)。pass什么事也不做,只是空占位语句。
for循环格式
for <target> in <object>:
<statements>
<break>
<continue>
<pass>
else:
<statements>
可选的else部分(当控制权离开循环而又没有碰到break语句时会执行)。pass什么事也不做,只是空占位语句。
修改列表:一般的for循环无法修改遍历的列表中每个元素的值,例如:
L=[1, 2, 3, 4, 5]
for x in L:
x += 1
#L输出为:[1, 2, 3, 4, 5]
可以通过range/len结合进行对列表索引,也可以使用列表解析的进行修改。
zip函数可以创建一个元组对的列表,可以接受两个以上的参数,例如zip(L1,L2,L3),并且zip会以最短序列的长度为准来截断所得到的元组。
第14章 迭代器和解析,第一部分
文件迭代器
文件对象有一个名为__next__方法,每次调用时,返回文件的下一行,达到文件末尾时会引发内置的StopIteration异常。文件对象就是迭代器。
手动迭代:iter和next
通过iter内置函数获得可迭代对象的一个迭代器,返回的对象含有需要的next方法。对文件对象则不需要通过iter内置函数进行转换。
L=[1,2,3]
I=iter(L)
I.next() #等于1
I.next() #等于2
其他迭代环境
map类似于列表解析,它把一个函数调用应用于传入的可迭代对象中的每一项。sorted排序可迭代对象中的各项,zip组合可迭代对象中的各项,enumerate根据相对位置来配对可迭代对象中的项,filter选择一个函数为真的项,reduce针对可迭代对象中的成对的项运行一个函数。
import functools, operator
sorted(open('text.py'))
list(zip(open('text.py'),open('text.py')))
list(enumerate(open('text.py')))
list(filter(bool,open('text.py')))
functools.reduce(operator.add,open('text.py'))