博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python学习day14 装饰器(二)&模块
阅读量:4322 次
发布时间:2019-06-06

本文共 3931 字,大约阅读时间需要 13 分钟。

装饰器(二)&模块

#普通装饰器基本格式def wrapper(func):    def inner():        pass        return func()    return innerdef func():    passfunc = wrapper(func)func()#带参数装饰器基本格式def w(counter):    def wrapper(func):        def inner(*args,**keargs):            lis = []            for i in range(0,counter):                a=func(*args,**keargs)                lis.append(a)            return lis        return inner    return wrapperdef func(*args,**keargs):    return 8

0.装饰器补充

  • 常见的模块(hashlib,random,getpass,time)

  • 默认值参数尽量是不可变数据类型!可变数据类型有坑!面试题

    def func(a,b=[]):    b.append(a)    return bl1 = func(1)l2 = func(2,[11,22])l3 = func(3)# [1,3]   [11,22,2]   [1,3]print(l1,l2,l3)                                   #最后输出的时候l1与l3均已运行,b=[1,3]
    def func(a,b=[]):    b.append(a)    print(b)                                      #函数执行一次输出一次func(1)func(2,[11,22,33])func(3)# [1]  [11,22,33,2]   [1,3]
  • 递归

    • 函数自己调用自己.效率低
  • 装饰器:

#普通装饰器基本格式def x(func):    def inner():        return func()    return inner @xdef index():    pass#带参数的装饰器基本格式def x(counter):    def wrapper(func):        def inner(*args,**kwargs):            data = func(*args,**kwargs) # 执行原函数并获取返回值            return data        return inner     return wrapper @x(counter)def index():    pass
#面试题# 写一个带参数的装饰器,实现:参数是多少,被装饰的函数就要执行多少次,并返回最后一次执行的结果【面试题】def xxx(counter):    print('x函数')    def wrapper(func):        print('wrapper函数')        def inner(*args,**kwargs):            for i in range(counter):                data = func(*args,**kwargs) # 执行原函数并获取返回值            return data        return inner    return wrapper@xxx(5)def index():    return 8v = index()print(v)

1.带参数的装饰器

  • flask框架中存在很多带参数的装饰器;面试题

2.模块

  • \n 换行符

  • \t 制表符table

  • \r 回到当前的起始位置,再次打印时删除本行内容

    print('回到起始位置\r',end='')print('清空原有内容',end='')
  • r 释义,当文件路径中存在\n或者\t等字符时,当做普通字符处理

    v1 = r"D:\code\s21day14\n1.mp4"  (推荐)print(v1)

1.os模块

和操作系统相关的数据。

  • os.path.exists(path) , 如果path存在,返回True;如果path不存在,返回False

  • os.stat('20190409_192149.mp4').st_size , 获取文件大小

  • os.path.abspath() , 获取一个文件的绝对路径

    path = '20190409_192149.mp4' # D:\code\s21day14\20190409_192149.mp4import osv1 = os.path.abspath(path)print(v1)
  • os.path.dirname ,获取路径的上级目录

    import osv = r"D:\code\s21day14\20190409_192149.mp4"print(os.path.dirname(v))
  • os.path.join ,路径的拼接

    import ospath = "D:\code\s21day14" # user/index/inx/fasd/v = 'n.txt'result = os.path.join(path,v)print(result)result = os.path.join(path,'n1','n2','n3')print(result)
  • os.listdir , 查看一个目录下所有的文件【第一层】

    import osresult = os.listdir(r'D:\code\s21day14')for path in result:    print(path)
  • os.walk , 查看一个目录下所有的文件【所有层】

    import osresult = os.walk(r'D:\code\s21day14')for a,b,c in result:    # a,正在查看的目录 b,此目录下的文件夹  c,此目录下的文件    for item in c:        path = os.path.join(a,item)        print(path)

2.sys模块

python解释器相关的数据。

  • sys.getrefcount , 获取一个值的应用计数

    a = [11,22,33]b = aprint(sys.getrefcount(a))
  • sys.getrecursionlimit , python默认支持的递归数量

  • sys.stdout.write --> print (进度)

    import timefor i in range(1,101):    msg = "%s%%\r" %i    print(msg,end='')    time.sleep(0.05)
    #进度显示import os# 1. 读取文件大小(字节)file_size = os.stat('20190409_192149.mp4').st_size# 2.一点一点的读取文件read_size = 0with open('20190409_192149.mp4',mode='rb') as f1,open('a.mp4',mode='wb') as f2:    while read_size < file_size:        chunk = f1.read(1024) # 每次最多去读取1024字节        f2.write(chunk)        read_size += len(chunk)        val = int(read_size / file_size * 100)        print('%s%%\r' %val ,end='')
  • sys.argv

    #!/usr/bin/env python# -*- coding:utf-8 -*-"""让用户执行脚本传入要删除的文件路径,在内部帮助用将目录删除。C:\Python36\python36.exe D:/code/s21day14/7.模块传参.py D:/testC:\Python36\python36.exe D:/code/s21day14/7.模块传参.py"""import sys# 获取用户执行脚本时,传入的参数。# C:\Python36\python36.exe D:/code/s21day14/7.模块传参.py D:/test# sys.argv = [D:/code/s21day14/7.模块传参.py, D:/test]path = sys.argv[1]# 删除目录import shutilshutil.rmtree(path)

3.time

  • time.time() 获取当前时间
  • time.sleep('时间') 休眠时间

4.shutil

#删除import shutilshutil.rmtree(path)

模块小结

  • random
  • hashlib
  • getpass
  • time
  • os
  • sys
  • shutil

转载于:https://www.cnblogs.com/bigox/p/10720284.html

你可能感兴趣的文章
Alpha 冲刺 (7/10)
查看>>
一款jQuery打造的具有多功能切换的幻灯片特效
查看>>
SNMP从入门到开发:进阶篇
查看>>
@ServletComponentScan ,@ComponentScan,@Configuration 解析
查看>>
unity3d 射弹基础案例代码分析
查看>>
thinksns 分页数据
查看>>
os模块
查看>>
LINQ to SQL vs. NHibernate
查看>>
基于Angular5和WebAPI的增删改查(一)
查看>>
windows 10 & Office 2016 安装
查看>>
最短路径(SP)问题相关算法与模板
查看>>
js算法之最常用的排序
查看>>
Python——交互式图形编程
查看>>
经典排序——希尔排序
查看>>
团队编程项目作业2-团队编程项目代码设计规范
查看>>
英特尔公司将停止910GL、915GL和915PL芯片组的生产
查看>>
Maven配置
查看>>
HttpServletRequest /HttpServletResponse
查看>>
SAM4E单片机之旅——24、使用DSP库求向量数量积
查看>>
从远程库克隆库
查看>>