首页 > 编程语言 >Python 装饰器

Python 装饰器

时间:2024-02-16 13:00:11浏览次数:34  
标签:__ 函数 Python datetime time now 装饰

Python 装饰器

装饰器原理

  1. 定义
    1. 本质是函数,用来装饰其他函数,为其他函数添加附加功能
  2. 原则
    1. 不能修改被装饰函数的源代码
    2. 不能修改被装饰的函数的调用方式
  3. 实现装饰器知识储备
    1. 函数就是变量
    2. 高阶函数
      1. 把一个函数当作实参传给另外一个函数,在不修改被装饰函数源代码情况下为其添加功能
      2. 返回值中包含函数名,不修改函数的调用方式
    3. 嵌套函数
      1. 高阶函数 + 嵌套函数 → 装饰器

举个例子

import time
from datetime import datetime


# 定义一个装饰器函数
def measure_time(func):
    
    def wrapper(*args, **kwargs):
        start_time = time.time()
        result = func(*args, **kwargs)
        end_time = time.time()
        execution_time = end_time - start_time
        print(f"{func.__name__} 函数的执行时间为: {execution_time:.4f} 秒")
        return result

    return wrapper


# 使用装饰器来测量函数执行时间
@measure_time
def now():
    # 打印当前时间
    time.sleep(2)
    currentDateAndTime = datetime.now()
    currentTime = currentDateAndTime.strftime("%H:%M:%S")
    print("The current time is", currentTime)


if __name__ == '__main__':
    # 调用 now
    now()

标签:__,函数,Python,datetime,time,now,装饰
From: https://www.cnblogs.com/lockegogo/p/18017049

相关文章

  • python - flask wsgi
    直接使用flask自带的wsgi,关闭debug模式会出现以下警告fromflaskimportFlaskapp=Flask(__name__,static_folder="./static")app.run(host="0.0.0.0",port=8080,debug=False)#WARNING:Thisisadevelopmentserver.Donotuseitinaproductiondeployme......
  • python基础学习7-文件以及oa操作
    操作文件步骤打开/创建变量名=open(filename,mode,encoding)操作变量名.read()变量名.write()关闭变量名.close()withopen(...)asfile:passjson模块json.dumps(obj)json(lst,ensure_ascli=False,indent=4)防止中文乱码,和提供缩进美化json.loads(......
  • python类的实现中有关__setattr__原理问题
    python类的实现中有关__settar__原理问题具体解决思路问题代码段:classCustomAttributes:def__init__(self):self._attributes={}def__setattr__(self,name,value):#允许设置名为'_attributes'的属性,这是实现所必......
  • Python 爬取历史天气数据
    网站原始数据https://www.tianqishi.com/hangzhou/20240214.html源码importrequestsfrombs4importBeautifulSoupimportdatetimedefgetEachDayWeather(loaction,timeStamp):"""获取每一天的天气数据"""#1.获取网页地址urlHea......
  • Python--操作列表
    Python--操作列表遍历整个列表对于每个元素的执行操作,使用单数和复数的名称,可用帮助判断代码片段处理的是单个列表元素还是整个列表.magicians=['alice','bob','charlie']formagicianinmagicians:print(magician)#alice#bob#charlie在for循环中可以执......
  • Python笔记09——Set(集合)
    九、集合9.1基础集合(set)是一个无序的不重复元素序列,可进行交、集、差等常见的集合操作。与序列的区别:无序,每次输出顺序随机;元素不重复;创建格式:parame={value01,value02,...}或者set(value)(创建空集合只能用set())创建集合示例set1={1,2,3,4}#直接使用......
  • 机器视觉-使用YoloV8的Python API
    参考文档:https://docs.ultralytics.com/modes/predict/#working-with-resultshttps://zhuanlan.zhihu.com/p/655162922https://thinkinfi.com/motorcycle-helmet-detection-using-deep-learning/示例说明关于yoloruntimesettings.yaml对训练过程的干扰yolosettings.y......
  • Python 机器学习 线性回归 正则化线性模型
    ​ Python机器学习中,正则化是一种减少模型过拟合的技术,通过在损失函数中添加一个正则化项来实现。对于线性回归模型,常见的正则化方法有Lasso回归(L1正则化)、岭回归(L2正则化)和弹性网络回归(同时使用L1和L2正则化)。这些方法可以调整模型的复杂度,提高模型的泛化能力。1、欠拟合(Und......
  • 【Python】强化学习Q-Learning走迷宫
    Q-Learning是一种基于值函数的强化学习算法,这里用该算法解决走迷宫问题。算法步骤如下:1.初始化Q表:每个表格对应状态动作的Q值。这里就是一个H*W*4的表,4代表上下左右四个动作。2.选择动作:根据Q表格选择最优动作或者以一定概率随机选择动作。3.执行动作,得到返回奖励(这......
  • Python:处理大数据量文件心得
    --javascripttypescriptbashsqljsonhtmlcssccppjavarubypythongorustmarkdown完成大文件按规则拆解。使用python实现将5个多g,总共五千万行数据的csv文件进行按照某个特殊时属性进行拆解。问题难点:文件过大,服务器内存资源不足,需要分块读入内存并处理。之前想着......