python根据方法名获取方法_Python中如何通过函数名获得此函数是否有装饰器
最新回答
2019-12-08回答
所谓装饰器函数包装函数添加些附加功能装饰器函数参数包装函数返包装函数:试:
首先十分不推荐这种做法, 会令程序难以维护.
其次, 多个装饰器是按照装饰器的顺序进行执行的.
如果你编写过装饰器, 你就应该知道, 其实装饰器就是把函数的名字传入进去, 在执行函数之前, 进行一些提前的处理.
例如下面这段代码, 自定义的装饰器
def add_schedid(handler_func):
"""
@handler_func: 请求处理函数
"""
@functools.wraps(handler_func)
def wrapper(self, *args, **kwargs):
"""
wrapper
"""
# handler_func就是所装饰的函数,可以在这里做一些真正函数执行前所需的处理,
handler_func(self, *args, **kwargs)
return wrapper
装饰器本身就是一个函数, 将所装饰的函数, 作为一个参数传进来, 然后在执行这个函数之前, 进行一个处理,这就是装饰器. 所以和正常函数执行顺序是一样的..
通常可以理解它是一个hook 的回调函数。
或者是理解成python 留给二次开发的一个内置API。 一般是用回调和hook 方式实现的。
简单来讲,可以不严谨地把Python的装饰器看做一个包装函数的函数。
比如,有一个函数:
def func():
print 'func() run.'
if '__main__' == __name__:
func()
运行后将输出:
func() run.
现在需要在函数运行前后打印一条日志, 但是又不希望或者没有权限修改函数内部的结构, 就可以用到装饰器(decorator):
def log(function):
def wrapper(*args, **kwargs):
print 'before function [%s()] run.' % function.__name__
rst = function(*args, **kwargs)
print 'after function [%s()] run.' % function.__name__
return rst
return wrapper
@log
def func():
print 'func() run.'
if '__main__' == __name__:
func()
对于原来的函数"func()"并没有做修改,而是给其使用了装饰器log,运行后的输出为:
before function [func()] run.
func() run.
after function [func()] run.
把"@log"放到func()函数
电缆载流量是指一条电缆线路在输送电能时所通过的电流量,在热稳定条件下,当电缆导体达到长期允许工作温度时的电缆载流量称为电缆长期允许载流量。
电缆载流量口决:
估算口诀:
二点五下乘以九,往上减一顺号走。
三十五乘三点五,双双成组减点五。
条件有变加折算,高温九折铜升级。
穿管根数二三四,八七六折满载流。
说明:
(1)本节口诀对各种绝缘线(橡皮和塑料绝缘线)的载流量(安全电流)不是直接指出,而是”截面乘上一定的倍数”来表示,通过心算而得。由表5 3可以看出:倍数随截面的增大而减小。
“二点五下乘以九,往上减一顺号走”说的是2.5mm’及以下的各种截面铝芯绝缘线,其载流量约为截面数的9倍。如2.5mm’导线,载流量为 2.5×9=22.5(A)。从4mm’及以上导线的载流量和截面数的倍数关系是顺着线号往上排,倍数逐次减l,即4×8、6×7、
python根据方法名获取方法_Python中如何通过函数名获得此函数是否有装饰器相关推荐
- python 当前文件路径获取方式_python中获取文件路径的几种方式
# 如果执行文件为E:\aa\bb\aa.py 1.获取当前路径 current_path11 = os.path.abspath(__file__) current_path12 = os.path ...
- python单稳态触发_使用 方法可以获取一个列表中最大元素的值。_学小易找答案...
[填空题]若在列表的最后添加新元素,则可以直接使用列表的 方法. [填空题]将一个线程的 属性设置为True,则该线程为守护线程. [填空题]是在调用函数时函数名后面的一对小括号中给出的参数列表. [ ...
- Python基础_第5章_Python中的数据序列
Python基础_第5章_Python中的数据序列 文章目录 Python基础_第5章_Python中的数据序列 Python中的数据序列 一.字典--Python中的==查询==神器 1.为什么需要 ...
- Python基础_第3章_Python中的循环结构
Python基础_第3章_Python中的循环结构 文章目录 Python基础_第3章_Python中的循环结构 Python中的循环结构 一.回顾分支练习题 1.判断是否为一个合法三角形 2.求世界 ...
- python 函数结果缓存一段时间的装饰器
把函数结果缓存一段时间,比如读取一个mongodb,mongodb中的内容又在发生变化,如果从部署后,自始至终只去读一次那就感触不到变化了,如果每次调用一个函数就去读取那太频繁了耽误响应时间也加大了c ...
- python的api是什么意思_python中api的使用方法是什么
python中api的使用方法是什么 发布时间:2020-07-31 13:48:21 来源:亿速云 阅读:77 作者:清晨 小编给大家分享一下python中api的使用方法是什么,希望大家阅读完这篇 ...
- python计时器timeit返回秒数_python中的计时器timeit的使用方法
本文介绍了python中的计时器timeit的使用方法,分享给大家,具体如下: timeit 通常在一段程序的前后都用上time.time(),然后进行相减就可以得到一段程序的运行时间,不过pytho ...
- python中的排序方法都有哪些_Python中的排序方法sort(),sorted(),argsort()等
Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列. 1)排序基础 简单的升序排序是非常容易的.只需要调用sorte ...
- python提前结束本层循环_python中退出多层循环的方法
1.定义标记变量:利用变量值的变化退出循环 # 第一种嵌套形式 a = [[1, 2, 3], [5, 5, 6], [7, 8, 9]] # init_i = 0 # init_j = 0 flag ...
- python中合法变量名_python中的合法变量名有什么规则
python中合法变量名的规则有:1.可以由字母.数字.下划线组成,同时,不能以数字开头:2.不能是python关键字,但可以包含关键字:3.不能包含空格.例如:[a1c_x2z]. Python 需 ...
最新文章
- 【好文推荐】查看mysql安装位置
- Atomikos 中文说明文档【转】
- Chrome 正在测试标签页的预览功能
- VTK:PolyData之Reflection
- Python_socketserver
- 深度学习基础 | RNN家族全面解析
- 移动应用的黄金四分类
- win7能装mysql_win764位系统怎么安装mysql
- java实现grpc
- **汉服有哪些基本形制呢**
- 开源软件许可协议介绍
- 路由器php系统时间设置时间设置时间设置,4G工业路由器系统设置与时间密码设置...
- java 1 2 等于_java 判断语句中一个等于号和两个等于号的区别是什么?
- Excel成绩表打印
- 测试-小程序打码平台
- 自损八百!美光停止供货华为
- 招银网络科技终面编程题
- js获取url地址参数
- 三星s8 打开usb调试教程
- Linux下c语言的图形编程(转) curses.h 函式库