首页 > 编程语言 >python装饰器函数学习笔记

python装饰器函数学习笔记

时间:2023-06-14 18:56:51浏览次数:35  
标签:25 log python 笔记 2015 now 装饰 decorator 函数

函数也是一个对象,并且这个对象可以被赋值给变量,所以,我们可以通过变量调用该函数

def now():
... print('2015-3-25')
...

f = now
f()
2015-3-25

函数对象有一个__ name __属性,可以拿到函数名字:

now.name
'now'
f.name
'now'

现在如果我们要增强now()函数的功能,比如,在函数调用前后自动打印日志,但又不希望修改now()函数的定义,这种在代码运行期间动态增加功能的方式,称之为“装饰器

要定义一个能打印日志的decorator,可以定义如下

def log(func):
def wrapper(args, **kw):
print('call %s():' % func.name)
return func(
args, **kw)
return wrapper

因为上面的log是一个decorator,它接受一个函数作为参数,并返回一个函数,我们要借助Python的@语法,把decorator置于函数的定义处

@log
def now():
print('2015-3-25')

现在调用now函数,会在now()函数运行前打印一行日志:

now()
call now():
2015-3-25

由于log()是一个decorator,返回一个函数,所以,原来的now()函数仍然存在,只是现在同名的now变量指向了新的函数,于是调用now()将执行新函数,即在log()函数中返回的wrapper()函数。

辅助理解资料https://www.bilibili.com/video/BV1Vv411x7hj/?p=1&vd_source=8e08ef85ef9b6a1d6b9bd509d41145d8

标签:25,log,python,笔记,2015,now,装饰,decorator,函数
From: https://www.cnblogs.com/luwanzi/p/17480720.html

相关文章

  • python返回函数学习笔记
    内部函数sum可以引用外部函数lazy_sum的参数和局部变量,当lazy_sum返回函数sum时,相关参数和变量都保存在返回的函数中,这种称为“闭包(Closure)”的程序结构拥有极大的威力deflazy_sum(*args):defsum():ax=0forninargs:ax=ax+nreturnaxreturn......
  • Python基础——网络编程
    在网络编程中主要是使用Socket(套接字)进行编程,套接字相当于应用程序访问下层网络的服务的接口,使用Socket可以是得不同主机之间进行通信,从而实现数据交换。1、Socket工作方式套接字在工作的时候连接的两端分别为客户端和服务器端,对于客户端和服务器端的工作方式是不一样的。对于服......
  • Python中时间与时间戳之间的转换
    对于时间数据,如2016-05-0520:28:54,有时需要与时间戳进行相互的运算,此时就需要对两种形式进行转换,在Python中,转换时需要用到time模块,具体的操作有如下的几种:将时间转换为时间戳重新格式化时间时间戳转换为时间获取当前时间及将其转换成时间戳1、将时间转换成时间戳将如上的时间2016......
  • FFT 学习笔记
    首先就是中考这几天我们学校做考场,然后初二放假在家写作业。然后我就摸鱼来推之前不会的FFT的式子,推一推发现诶麻麻我懂了!麻麻我悟了麻麻!于是在放假第二天我写下了这样一篇学习笔记qwq多项式的系数表示和点值表示我们都知道,一个\(n\)项多项式,如果我们写成一个函数,就可以......
  • 软件测试|教你用Python处理PDF文件(一)
    前言点击获取更多技术资料!我们在工作中,难免会遇到需要处理PDF文件的情况,PDF文件与Word文件不同,内容提取不是很容易,表格和图片都需要特别处理。不过PDF有一个优势,PDF可以跨平台使用,Windows系统,Mac系统都可以打开PDF文件,不像doc文件,需要在word或者类似的软件中才能打开。但是PDF......
  • python nohup 远程运行不宕机方法
    远程运行最怕断电,训练了几个小时的数据说没就没,或者停止运行。用nohup记录代码的输出,还可以不受断电的影响。方法1.用nohup运行一个python文件nohuppython-umain.py>nohup.out2>&1&除了main.py换成自己的文件名,nohup.out也可以改为其他名字,nohup1.out等。其余照搬。不......
  • python GUI+爬虫——12306抢票软件(2)
    这部分主要是项目环境的配置,下图是概览1.基于项目的虚拟环境--pipenv1.1简介1.2安装pipinstallpipenv, 检查安装状态:pipenv--version 我的系统是mac,该项目使用Windows10开发更好1.3创建项目的虚拟环境,使用pycharm1.4创建完后修改安装源,修改位置为pipfile文件修改:来源修......
  • JavaScript学习笔记 - 语法篇 - 一句废话没有版
    写在前面:绝不废话!放心食用JavaScript语法很简单,可以直接在控制台调试理解目录1、变量和常量2、数据类型3、字符串3.1模板字符串3.2字符串的部分常用函数4、数组5、对象6、对象数组&&JSON7、if条件&&三目运算7.1if条件7.2三目运算8、switch9、循环9.0准备工作9.1......
  • python偏函数学习笔记
    Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partialfunction)比如,int函数默认十进制转换,若提供其它base参数,就可以进行n进制转换int('12345',base=8)5349int('12345',16)74565定义一个int2()的函数,默认把base=2传进去defint2(x,base=2):retu......
  • python高阶函数filter、sorted学习笔记
    filterPython内建的filter()函数用于过滤序列。和map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。e.g在一个list中,删掉偶数,只保留奇数,可以这么写:点击查看代码de......