一:python functools.wraps 实例 1. 未使用wraps的实例 #!/usr/bin/env python # coding:utf-8 def logged(func): def with_logging(*args, **kwargs): '''i am wraps's doc''' print func.__name__ + " was called" return func(*args, **kwargs) return with_logging @log…
概念 super作为python的内建函数.主要作用如下: 允许我们避免使用基类 跟随多重继承来使用 实例 在单个继承的场景下,一般使用super来调用基类来实现: 下面是一个例子: class Mammal(object): def __init__(self, mammalName): print(mammalName, 'is a warm-blooded animal.') class Dog(Mammal): def __init__(self): print('Dog has fou…
计算机的知识太多了,很多东西就是一个使用过程中详细积累的过程.最近遇到了一个很久关于future的问题,踩了坑,这里就做个笔记,免得后续再犯类似错误.   future的作用:把下一个新版本的特性导入到当前版本,于是我们就可以在当前版本中测试一些新版本的特性.说的通俗一点,就是你不用更新python的版本,直接加这个模块,就可以使用python新版本的功能. 下面我们用几个例子来说明它的用法: python 2.x print不是一个函数,不能使用help. python3.x print是一个…
functools模块处理的对象都是其他的函数,任何可调用对象都可以被视为用于此模块的函数. 1. functools.cmp_to_key(func) 因为Python3不支持比较函数,cmp_to_key就是将老式的比较函数(comparison function)转换成关键字函数(key function),与能够接受key function的函数一起使用,比如说sorted,list.sort, min, max, heapq.nlargest, itertools.groupby等等.…
# -*-coding=utf-8 -*-#实现一个函数执行后计算执行时间的功能 __author__ = 'piay' import time, functools def foo(): ''' 定义一个普通函数 :return: ''' print 'this is foo' foo() ''' 这里如果我们需要查看函数执行时间,修改为: ''' def foo1(): start_time = time.clock() print 'this is foo1' end_time = tim…
第一次见到functools.wraps是在 Flask Web开发 中,一直不明白怎么回事. 装饰器(decorator)是干嘛的?对于受到封装的原函数来说,装饰器能够在那个函数执行前或者执行后分别运行一些代码,使得可以再装饰器里面访问并修改原函数的参数以及返回值,以实现约束定义.调试程序.注册函数等目标.装饰器一般返回一个包装器(wrapper),而functools.wraps就是装饰包装器的装饰器. 先来看一个不使用functools.wraps的装饰器例子. def tracer(fu…
Python 中使用装饰器对在运行期对函数进行一些外部功能的扩展.但是在使用过程中,由于装饰器的加入导致解释器认为函数本身发生了改变,在某些情况下——比如测试时——会导致一些问题.Python 通过 functool.wraps 为我们解决了这个问题:在编写装饰器时,在实现前加入 @functools.wraps(func) 可以保证装饰器不会对被装饰函数造成影响.比如,在 Flask 中,我们要自己重写 login_required 装饰器,但不想影响被装饰器装饰的方法,则 login_req…
# -*- coding: utf-8 -*- # author:baoshan def wrapper(func): def inner_function(): pass return inner_function @wrapper def wrapped(): pass print(wrapped.__name__) # inner_function def wrapped2(): pass print(wrapper(wrapped2).__name__) # inner_function…
在看 Bottle 代码中看见 functools.wraps 这种用法. def make_default_app_wrapper(name): """ Return a callable that relays calls to the current default app. """ a = getattr(Bottle, name) @functools.wraps(getattr(Bottle, name)) def wrapper(*…
functools.wraps装饰器用于显示被包裹的函数的名称 import functools def node(func): #@functools.wraps(func) def wrapped(*args, **kwargs): print "print from node" return wrapped @node def func(): print "print from func" print func.__name__ 当没有wraps包裹时,输出的…