f.read(3)代表读取3个字符,如果是b模式打开的文件,则是读取三个字节
f.flush将文件从内存刷到硬盘
f.closeed文件如果关闭则返回True
f.encoding查看使用open打开文件的编码
tell查看光标位置
seek移动光标
truncate截断文件
0模式,从开头开始移动光标位置,默认模式就是0,以r模式打开就行
1模式,从上一次的光标位置开始移动(要以rb的方式读 文件)f.seek(10,1)
2模式,从文件末尾开始倒着移动光标f.seek(-10,2),注意windows行尾有
,多用在写日志文件的时候
循环文件的方式:
for i in f:这样用到的时候才会读到内存中
for i in f.readlines():这样是是把文件所有内容读到内存中
for i in f:
f.seed(-3,2)
迭代器
递归:自己调用自己,将处理结果不断地传递给自己处理,直到得到最终结果
可迭代对象:更新换代,每次得到的结果都是基于上一次
for循环的机制(很重要)
while循环模拟for循环的工作机制
li = [1,2,3,4,5]
li_iter=li.__iter__()
while True:
try:
print(li_iter.__next__())
except StopIteration:
print("迭代完毕,终止打印")
break
生成器:就是可迭代对象,不需要通过_iter_()进行转换,直接调用方法._next_(),或者函数nest(),生成器的值只可以取一次
生成器函数:函数族后yiel代替return,可以yield多从,retrun只可以一次
列表解析:[ 'bb%s' %i for i in range(10) ],三元表达式规则,把[]换成()就变成了生成器表达式
三元表达式:
"sd" if name == "sdd" else "sb"
一元 二元 三元
列表解析:
[ 'bb%s' %i for i in range(10) ] 生成列表,数值较大的时候会占用内存
装饰器:本质就是函数,功能激素hi为其他函数添加附加功能
原则:
1、不修改被修饰函数源代码
2、不修改被修饰函数的调用方式
知识储备:
1、高阶函数、2、函数的嵌套 3、闭包
@timmer 在修饰的函数之前定义一下,相当于test= timmer(test)
import time
def timmer(func):
def warper(*args,**kwargs):#处理多个参数
strat_time = time.time()
res=func(*args,**kwargs)#处理多个参数及返回值
stop_time = time.time()
print("程序运行时间:%s" %(stop_time-strat_time))
return res #处理返回值
return warper
@timmer #调用装饰器
def test(name,age):
time.sleep(2)
print("我的名字是:%s,我的年龄是%s 运行完毕"%(name,age))
return "这是test的返回值"
print(test("sss",16))
我的名字是:sss,我的年龄是16 运行完毕 程序运行时间:2.000950336456299 这是test的返回值
解压序列
l=[1,2,3,4,5,6,7]
a,*_,c=1
a=1
c=7
变量值交换
f1=1
f2=2
f1,f2=f2,f1
#处理返回值