day14-装饰器和模块知识点总结

python语言基础之装饰器和模块

请添加图片描述

1、给函数新增功能的方案

方案一:直接修改原函数,把新功能加进去
from random, time import randint, time
def download(name):
    start = time.time()
    print(f'{name}开始下载')
    time.sleep(randint(1,3))
    print(f'{name}下载结束')
    end = time.time()
    print(f'总时间是:{end-start}s')
download('熊出没')
方案二:实参高阶函数
def download(fn):
    print('-----------------------------')
    start = time.time()
    fn()
    end = time.time()
    print(f'总时间是:{end - start}')
def func(name='喜羊羊'):
    print(f'{name}开始下载')
    print(f'{name}下载结束')
download(func)
方案三:使用装饰器
def total_time(fn):
    def new_fn():
        start = time.time()
        fn()
        end = time.time()
        print(f'总时间是:{end - start}s')
    return new_fn

2、装饰器语法

装饰器 = 实参高阶函数+返回值高阶函数+糖语法

def 装饰器名称(旧函数):
	def 新函数(*args, **kwargs):
		result = 旧函数(*args, **kwargs)
		实现新增功能
		return result
	return 新函数
将返回值是数字的函数的返回值变成原来的10000倍
def add(fn):
    def new_add(*args, **kwargs):
        result = fn(*args, **kwargs)
        if type(result) in (int, float):
            return result * 10000
        return result
    return new_add

3、模块的导入

1)模块
python中的一个py文件就是一个模块;
可以在一个模块中使用另一个模块中的内容:前提:1)被另一个模块使用的模块的名字必须符合变量名的要求
2)被使用之前需要进行导包
2)导入模块
1)import 模块名    -   直接导入指定的模块,导入后能通过“模块名.”的方式使用模块中所有的全局变量
import test1
print(test1.a)   # 100
2)from 模块名 import 变量名1,变量名2,变量名3.......
----  通过模块导入指定变量,导入后直接使用指定的变量
from test1 import a, x, func
print(a)
print(x)
func()
3)from 模块名 import *   ---  通过*导入模块中所有的全局变量,导入后直接使用全局变量
from test1 import *
print(a)
print(x)
func()
4)重命名
1》import 模块名 as 新模块名  -  使用模块的时候用新模块名来使用
2》from  模块名 import 变量名1 as 新变量名,变量名2 as 新变量名,........
3)导入模块的原理
当代码执行到导入模块的时候,系统会自动进入该模块将模块中所有的代码都执行一遍

4、包的导入

1)import 包名  -  要修改__init__.py文件,才有意义,否则无用

对__init__文件的修改

功能一:导入包中所有的模块,让在外部直接导入包的时候可以通过包去使用包中所有的模块
例:from file_manage import csvFile, jsonFile
功能二:建立常用方法和数据的快捷键(通过包可以直接导入需要的模块)
例:from file_manage.jsonFile import write_dict
功能三:封装函数
def open_file():
	print('打开文件')
2)import 包名.模块名
3)from 包名 import 模块名
4)from 包名.模块名 import 变量1,变量2,.....

导入包中的模块的内容的时候,系统会先执行包中__init__.py文件中的内容,再执行模块中的内容

5、数学模块

math  -  普通数字相关的数学函数
cmath -  复数相关的数据函数

ceil(浮点数) - 将浮点数转换成整数(向大取整)

floor(浮点数) - 将浮点数转换成整数(向小取整)

round(浮点数) - 将浮点数转换成整数(四舍五入)

randrange(M,N,step) - 产生指定范围内步长为step的随机整数

randint(M,N) - 产生随机整数

random() - 产生0-1之间的随机小数

choice() - 从序列中抽取一个元素,返回的是字符串

choices(序列,k =n) - 从序列中随机获取指定数量的元素,有放回的抽取

sample(序列,k=n) - 从序列中随机获取指定数量的元素,无放回抽取

shuffle(列表) - 将列表中元素的顺序打乱

6、时间模块

1)获取当前时间(以时间戳的形式)
时间戳:以当前时间到1970年1月1日0时0分0秒(格林威治时间)的时间差来记录一个时间(时间差的单位是秒)
import time
t1 = time.time()
print(t1)
2)获取本地时间
1》localtime() - 获取当前的本地时间(返回值是结构体时间)
t2 = time.localtime()
print(t2)
2》localtime(时间戳)  -  获取指定时间戳对应的本地时间
3》睡眠  -  让程序暂停运行
sleep(时间)  -  时间单位是秒
4》将结构体时间转换成时间戳
t3 = time.mktime(结构体时间)
print(t3)

请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值