###文件处理
f.open(‘chengli’,endcoding=‘utf-8’)
data=f.read()
print(data)
f.close() 手动关
文件没有修改一说,只有覆盖
f.write()从光标处开始写
with open(‘a.txt’,’w’) as data:
with可以同时打开多个文件,用逗号隔开
###高级函数
map
reduce #from functools import reduce
list=(‘123_sb’,34,’a’,’b’)
filter(lambda x:x.endswith(“sb”),list)
f.flush() 刷新
f.tell() 光标当前显示的位置
#只有read(3)代表读取3个字符,其余的文件内光标移动都是以字节为单位,如seek,tell,readline,truncate
newline=‘’读取文件中真正的换行符
f.seek(0)用来控制光标的移动,0移动到首字节
f.seek(10,1) #1表示基于相对位置seek,即上一次光标停止的位置,seek 10个字节文件必须以b模式打开
f.seek(-10,2)#2表示逆序seek10个字节
f.truncate()文件截断,文件必须以w方式打开
data[-1]读取最后一行
###迭代器
for,sum, min, max
print(dir(x))
x._iter_()变成可迭代对象,遵循迭代器协议,即可使用x._next_()
###生成器generator object
自动实现了迭代器协议,生成器即为可迭代器,也可理解为一种数据类型
生成器函数:
yield语句得到返回值,即得到生成器
def test()
yield 1
yield 2
yield 3
可yield多次
yield可保留函数的运行状态,遇到yield的停留在执行完yield的位置
可以在如:
baozil=pro.g._next_()
#加代码
baozil= pro.g._next_()
生成器表达式:
三元表达式:例如:
’if判断的返回值’ if name == ‘alex’ else ‘else的返回值’
用for循环建列表:
l = [i for i in range(10)] #一元
l = [‘元素%s’ %i for i in range(10)] #二元
l = [‘元素%s’ %i for i in range(10) if i>5] #三元
三元表达式的缺点是只能生成列表,而且占内存,适合小数据
laomuji = (‘鸡蛋%s’ %i for i in range(10))#生成器表达式
print(laomuji._next_()) #或print(next(laomuji))
生成器表达式比列表解析更节省内存
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
###触发生成器运行的方法:
t._next_()
next(t)
t.send(None )
def test():
print('开始了')
first=yield 1
print('第一次',first)
yield 2
print('第二次')
t=test()
res=t.__next__()
print(res)
t.send(None)#None是传值给yield,yield赋值给first,且函数停留在first的位置
###并发