python笔记整理day3

阅读: 评论:0

python笔记整理day3

python笔记整理day3

装饰器:遵循开放封闭原则,在不改变原函数的情况下,扩展了函数的的功能函数名仅仅是个变量,只不过指向定义的函数而已,所以才能通过函数名()调用,如果函数名=xxx
被修改了,那么当在执行函数名()时,调用的就不指向之前的那个函数了
def decorater(fun):def wrapper():fun()print('刷漆')return wrapper
@decorater
def house():# house=decorater(house)print('毛坯房')house()
装饰器的功能:
1、引入日志  2、函数执行时间统计  3、执行函数前预备处理  4、执行函数后清理功能  5、权限校验等场景  6、缓存
'''
装饰器定义:
def aaa(func):def bbb(参数...):func()...return bbb
装饰:
@装饰器名   原函数=装饰器(原函数)
def 原函数():pass
带参数的装饰器
def decorater(func):def wrapper(*args,**kwargs):func(*args,**kwargs)print('刷漆')print('铺地板')return wrapper
@decorater
def house(name,address,area=40):print('{}房子位于{},共计{}平米'.format(name,address,area))
house('平安喜乐','刘屯')
装饰器修饰有返回值的参数
原函数有返回值,装饰器内部也要有返回值
def decorater(func):def wrapper(*args,**kwargs):r=func(*args,**kwargs)print('预计装修费用{}'.format(r))print('刷漆')print('铺地板')return rreturn wrapper@decorater
def house():print('我是一个毛坯房')return 300
r=house()
print(r)
print('*'*20)
def outer_check(time):print('-------')def check_time(action):def do_action():if time<22:return actionelse:print('999')return do_actionreturn  check_time
@outer_check(23)
def play_game():print('0000')
print(play_game())
递归函数:如果一个函数在内部不调用其它的函数,而是自己本身的话,这个函数就是递归函数
遵循:1、递归需要有出口2、每次递归向出口靠近
练习:使用递归实现斐波那契数列:1,1,2,3,5,8,13,21,34匿名函数:使用lambda关键词能创建小型函数,这个函数称为匿名函数,这种函数省略了def的声明
匿名函数的定义格式:  lambda 参数列表:返回值运算表达式
lambda函数能接收任何数量的参数但只能返回一个表达式的值
r=lambda a:a+1
r(2)
print(r(2))
匿名函数的应用场景:
1、匿名函数作为参数使用
def func1(a,f):print('---a')r=f(a)print(r)print('----b')
func1(2,lambda x:x+1)
'''
在python中,函数其实也是一种数据类型,函数对应的数据类型是function,可以把它当作是一种
复杂的数据类型,既然同样都是一种数据类型,我们就可以把它当作数字或者字符串进行处理
高阶函数:一个函数的参数是另一个函数
系统高阶函数:max  min  sorted
'''
list1=[('tom',19),('jerry',20),('rose',12),('cat',23)]
m=max(list1,key=lambda x:x[1])
print(m)
n=min(list1,key=lambda x:x[1])
print(n)
s=sorted(list1,key=lambda x:x[1],reverse=True)
print(s)
# filter的匿名函数要求返回值必须是bool类型,只有bool类型结果为True的才是符合过滤条件的
rr=filter(lambda x:x[1]>=20,list1)
print(list(rr))
# map:用来提取  通过匿名函数指明提取内容,并对内容进行加工处理ma=map(lambda x:x[0].upper,list1)
print(list(ma))
print('*'*20)from functools import reduce
# 压缩
r=reduce(lambda x, y: x + y, [1, 2, 3, 4, 5])
print(r)

文件操作:文件上传(日志、图片)
mode:r w rb wb
r、w分别表示读写  只能读写纯文本文件
rb、wb可以读写二进制文件  (视频、图片)
open(file,mode,buffering,encoding)
读文件:
open(path/filename,'rt)返回值:stream(管道)
container&#ad()  读取管道中内容
注意:如果传递的path/filename有误 则会报错  FileNotFoundError如果是图片则不能使用默认的读取方式,默认读取方式rt  mode='rb'
总结:
read()   读取所有内容
readable()  判断文件是否可读
readline()  每次读取一行内容
readlines() 读取所有行保存到列表中
写文件:
stream=open(path/filename,'w')  mode='w'表示写模式
方法:mode='w'write(内容):每次都会将原来的内容清空,然后写当前的内容writelines(iterable):没有换行的效果,可以手动添加fp=open(r'F:aa.txt','w')fp.write('To LuYi:n')s='You are the best!'fp.write(s)fp.writelines(['You will be sucessful,','you should be confident!n','fighting'])fp.close()
如果mode='a':不会将原来文件内容清空,会在文件的结尾处重新追加内容
文件的复制:建立两个文件流  一个用来进行读文件  一个用来进行写文件with结合open使用,可以帮助我们自动释放资源
# with open('./qq.jpg','rb') as fp:
#     container = fp.read()
# with open(r'F:pgi.jpg','wb') as fp1:
#     fp1.write(container)
# print('over')模块——os模块  系统模块
1、os.path()
2、os.path.dicname(__file__):找到当前文件所在文件夹的路径  绝对地址
3、os.path.join(path,'path2'):将path和path2连接  形成新的地址
import os
with open('./qq.jpg','rb') as fp:container = fp.read()print(fp.name)qie=fp.namefilename=qie[qie.rfind('\')+1:]# 截取文件名path=os.path.dirname(__file__)path1=os.path.join(path,filename)with open(path1,'wb')as fp1:fp1.write(container)
print('-------over')
4、os.path.isabs()判断路径是否是绝对路径  返回bool值
import os
r=os.path.isabs(r'F:pgir.jpg')
print(r)
相对路径:
同级别的文件路径查找:直接查找
不同级别的文件路径查找:比自己级别高 ../  先返回上一级在查找比自己级别低  / 找下一级
r=os.path.isabs('../images/girl_jpg')
r=os.path.isabs('images/girl.jpg'
5、os.path.abspath()  通过相对路径获得绝对路径os.path.abspath(__file__)获取当前文件的绝对路径os.getcwd() 获取当前文件所在文件夹路径os.isfile()os.isdic()os.split()os.splitext()os.getsize()
import os
# r=os.path.isabs(r'F:pgir.jpg')
# print(r)
# ro=os.path.abspath('./qq.jpg')
# print(ro)
ro=os.path.abspath(__file__)
print(ro)
print('*'*20)
path=r'C:UsersAdministratorPycharmProjectspythonProject1python 419qq.jpg'
result=os.path.split(path)
# 分割文件所在位置与祖先路径print(result[1])
print(result)
print('---------------')
path2=r'C:UsersAdministratorPycharmProjectspythonProject1python 419day1.py'
result1=os.path.splitext(path2)
ss&#wd()
print(ss)
print('$$$$$')
# 分割文件与扩展名
print(result1[1])
print(result1)
size=size(path2)
print(size)
# 获取文件的大小,单位是字节
joi=os.path.join(path2,'file','aa.jpg')
print(joi)'''
os的函数
os.listdir()返回指定目录下的所有的文件和文件夹,保存到列表中
os.mkdir()  创建指定路径下的文件
os.rmdir()  删除指定路径下的空文件os.rmdir(r'F:r')print('delete')
os.removedirs()
os.remove() 删除一个文件
it()
os.chdir()切换目录
os.getcwd()获取当前文件目录
'''
import os
path=r'F:qqqqq'
name_list=os.listdir(path)
print(name_list)
for list in name_ve(os.path.join(path,list))print('移除成功')
dir(path)print('over')复制文件:
import ossrc_path='F:q'
target_path='F:p'
src_name_list=os.listdir(src_path)
print(src_name_list)
for src_name in src_name_list:pp=os.path.join(src_path,src_name)with open(pp,'r') as fp:container&#ad()new_src_name=os.path.split(pp)print(new_src_name[1])qq = os.path.join(target_path, src_name)with open(qq,'w')as fp1:fp1.write(container)
else:print('over')复制文件和文件夹
import ossrc_path='F:p'
target_path='F:q'
def copy(src_path,target_path):src_path_list=os.listdir(src_path)for src_name in src_path_list:path=os.path.join(src_path,src_name)print(path)if os.path.isdir(path):new_path=os.path.join(target_path,src_name)os.mkdir(new_path)copy(path,new_path)else:with open(path, 'rb') as fp:container = fp.read()new_src_name = os.path.split(path)print(new_src_name[1])qq = os.path.join(target_path, src_name)with open(qq, 'wb') as fp1:fp1.write(container)else:print('end-----')
copy(src_path,target_path)文件总结:
文件操作:open()modepath  绝对路径  相对路径(相对当前路径)stream=open(file,ad()stream.write()stream.close()with open(path,mode) as stream:
os模块:
os.path常用函数
os常用函数:

本文发布于:2024-02-02 14:46:33,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170685639444504.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:笔记   python
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23