python 装饰器,传递类以及参数】的更多相关文章

简单记录一下利用python装饰器来调整函数的方法.现在有个需求:参数line范围为1-16,要求把9-16的范围转化为1-8,即9对应1,10对应2,...,16对应8. 下面是例子: def format_lines(): def make_wrapper(func): def wrapper(*args, **kwargs): lines = list(args)[1:] new_args = list() for index, line in enumerate(lines): if i…
最近想用Python写一个简单生成器,类似指定类型和范围,返回指定列表: 比如想要  0 ~ 3 的整数,则 我只需要指定: 最小:0, 最大:3, 步长:1 则返回一个 [0,1,2,3] 的列表 思路是用Python 装饰器,在def方法上打装饰器,装饰器内部替换方法调用时传入的参数值 代码如下: # coding=utf-8 def integer(min=0, max=100, step=1): def deco(func): def wrapper(val): val = [] for…
def debug(func): def wrapper(*args, **kwargs): # 指定宇宙无敌参数 print "[DEBUG]: enter {}()".format(func.__name__) print 'Prepare and say...',       return func(*args, **kwargs) return wrapper # 返回 @debug def say(something): print "hello {}!"…
1 可变长参数与关键字参数 *args代表任意长度可变参数 **kwargs代表关键字参数 用*args和**kwargs只是为了方便并没有强制使用它们. 缺省参数即是调用该函数时,缺省参数的值若未被传入,则传入默认预设的值. 注意 : 须将所有带有默认值的参数置于参数列表的末尾. def print_info(name, age = 18,gender = True ) print_info("zhan", gender = False ) def demo(num, *nums ,…
#装饰器:对类或者函数进行功能的扩展  很多需要缩进的没有进行缩进'''#第一步:基本函数def laxi(): print('拉屎')#调用函数laxi()laxi() print('=======================================')#第二步:扩展函数的功能(不能修改原函数)#用于扩展基本函数的函数#把一个函数(laxi函数)作为一个整体传给另外一个函数(kuozhan函数)#这个函数(kuozhan函数)用形参func收到了laxi函数,收到之后在中间#调用l…
''' 预备知识: …… @decorator def f(*args,**kwargs): pass # 此处@decorator  等价于 f = decorator(f) @decorator2(*args,**kwargs) def f2(*args,**kwargs): pass # 此处@decorator2(*args,**kwargs)  等价于: 第一步,执行函数decorator2(*args,**kwargs),获得中间结果temp;  第二步,执行装饰器函数(即@temp…
最简单的模板是这样的 #-*-coding:utf-8-*- def outer(func): def inner(): print 'before' func() print 'after' # return r return inner ''' def outer_1(func): def inner(): print 'before 11' func() print 'after 22' # return r return inner @outer_1 ''' @outer def F1(…
def func(functionName): print("正在装饰") def func_in(*args, **kargs): print("------func_in---1--") res = functionName(*args, **kargs) print("------func_in---2---") return res print("装饰结束") return func_in # 再还没有执行test函数…
python中的装饰器是一个用得非常多的东西,我们可以把一些特定的方法.通用的方法写成一个个装饰器,这就为调用这些方法提供一个非常大的便利,如此提高我们代码的可读性以及简洁性,以及可扩展性. 在学习python装饰器之前我们先看看这样一个例子: 一.作用域 # coding:utf-8 msg = 'hello test1' def add(): msg = 'this is add' print msg #当执行add()时将打印'this is add' def add2(): print…
原文地址 https://www.codementor.io/python/tutorial/advanced-use-python-decorators-class-function 介绍 我写这篇文章的主要目的是介绍装饰器的高级用法.如果你对装饰器知之甚少,或者对本文讲到的知识点易混淆.我建议你复习下装饰器基础教程. 本教程的目标是介绍装饰器的一些有趣的用法.特别是怎样在类中使用装饰器,怎样给装饰器传递额外的参数. 装饰器 vs 装饰器模式 Decorator模式是一个面向对象的设计模式,它…