python 之修饰器
from functools import update_wrapper
def debug(func):
def wrapper():
print "[DEBUG]: enter {}()".format(func.__name__)
return func()
return update_wrapper(wrapper,func)#使被修饰的函数名称不会变成wrapper @debug
def say_hello(): #被修饰后,函数的代码会变化,先调用wrapper函数
print "hello!"
print say_hello.__name__
def say_hello2():
print "hello!" say_hello()
'''
Disassembly of module1
''' Disassembly of debug:
16 0 LOAD_CLOSURE 0 (func)
3 BUILD_TUPLE 1
6 LOAD_CONST 1 (<code object wrapper at 0129FB18, file "<module1>", line 16>)
9 MAKE_CLOSURE 0
12 STORE_FAST 1 (wrapper) 19 15 LOAD_GLOBAL 0 (update_wrapper)
18 LOAD_FAST 1 (wrapper)
21 LOAD_DEREF 0 (func)
24 CALL_FUNCTION 2
27 RETURN_VALUE Disassembly of say_hello:
17 0 LOAD_CONST 1 ('[DEBUG]: enter {}()')
3 LOAD_ATTR 0 (format)
6 LOAD_DEREF 0 (func)
9 LOAD_ATTR 1 (__name__)
12 CALL_FUNCTION 1
15 PRINT_ITEM
16 PRINT_NEWLINE 18 17 LOAD_DEREF 0 (func)
20 CALL_FUNCTION 0
23 RETURN_VALUE Disassembly of say_hello2:
26 0 LOAD_CONST 1 ('hello!')
3 PRINT_ITEM
4 PRINT_NEWLINE
5 LOAD_CONST 0 (None)
8 RETURN_VALUE
python 之修饰器的更多相关文章
- python中用修饰器进行异常日志记录
当脚本中需要进行的的相同的异常操作很多的时候,可以用修饰器来简化代码.比如我需要记录抛出的异常: 在log_exception.py文件中, import functools import loggi ...
- python函数修饰器(decorator)
python语言本身具有丰富的功能和表达语法,其中修饰器是一个非常有用的功能.在设计模式中,decorator能够在无需直接使用子类的方式来动态地修正一个函数,类或者类的方法的功能.当你希望在不修改函 ...
- python 类修饰器
1. 修改类函数. 场景: 如果要给一个类的所有方法加上计时,并打印出来.demo如下: # -*- coding:utf-8 -*- import time def time_it(fn): &qu ...
- python decorator 修饰器
decorator 就是给函数加一层皮,好用! 1 from time import ctime 2 3 def deco(func): 4 def wrappedFunc(*args, **kwar ...
- Python 函数修饰器
# 一.用函数修饰函数 #!/usr/bin/python3 def decorate_func(func): def call(*args, **kwargs): print('you have c ...
- Python学习-修饰器 - itemgetter的妙用
下面这篇对装饰器讲的很好,懂了. http://python.jobbole.com/85056/ <简单 12 步理解 Python 装饰器> 使用装饰器非常简单(见步骤10),但是写装 ...
- python 通用 修饰器
import functools def log(option): def dec(func): def swapper(*arg, **karg): functools.update_wrapper ...
- Python修饰器的函数式编程
Python的修饰器的英文名叫Decorator,当你看到这个英文名的时候,你可能会把其跟Design Pattern里的Decorator搞混了,其实这是完全不同的两个东西.虽然好像,他们要干的事都 ...
- Python修饰器
Python的修饰器的英文名叫Decorator,当你看到这个英文名的时候,你可能会把其跟Design Pattern里的Decorator搞混了,其实这是完全不同的两个东西.虽然好像,他们要干的事都 ...
随机推荐
- Incjector
网上的注入工具很多,大多也有比较详细的解释,但是大部分windows下的注入软件都是对自己软件的一种推荐,而且很多也不是非常的安全,对于有些破解版本来说,很可能自身会被带有木马,所以,Linux下的注 ...
- Go Example--json
package main import ( "encoding/json" "fmt" "os" ) type Response1 stru ...
- EBS查询在线用户
转自:https://www.cnblogs.com/benio/archive/2011/03/10/1979417.html SELECT u.user_name, app.application ...
- 我发起了一个 用 C# 写 的 浏览器 开源项目 HtmlCore
我之前还发起过一个 项目, 名字也叫 HtmlCore, 见 <我发起了一个 .Net 开源 跨平台 GUI (界面开发框架)项目 HtmlCore> https://www.cnblo ...
- tomcat 发布后中文乱码问题
接口收到数据,使用Eclipse运行调试中文正常显示,发布到Tomcat后中文出现乱码情况: 解决方法: tomcat启动时默认使用系统编码,可更改tomcat bin目录下catalina.bat文 ...
- 获取邮箱使用情况、以及最后一次logon时间
# 每天收发邮件数 # https://gallery.technet.microsoft.com/scriptcenter/Count-sent-and-recceived-f9c66cf7 # 获 ...
- Python中实用却不常见的小技巧
https://mp.weixin.qq.com/s?__biz=MzI5NDY1MjQzNA==&mid=2247489061&idx=2&sn=65cec7fa471b1e ...
- C#工具类:Json操作帮助类(转载)
原文转载自C#工具类:Json操作帮助类_IT技术小趣屋. Json序列化和反序列化在程序开发中时常会遇到,在C#中可以使用很多种方法实现对数据的Json序列化和反序列化,封装一个Json操作工具类来 ...
- MSDE2008安装备忘
MSDE2008安装备忘(适用于WIN7 8 10) 1.系统中必须要VC8.0,即VC2005运行库.2.系统中必须要有.net framework2.0.3.5.4.6运行库.3.windows防 ...
- 学会学习:高效学习方式(使用vscode-snippet有感)
入职以来我们团队一直都在使用vscode编辑器,后来也有人开始使用webstorm.很久之前我突然为每天重复的编写.vue文件里面的export.<script lang="scss& ...