文档章节

Python 装饰器

明月知心
 明月知心
发布于 2017/07/31 01:32
字数 225
阅读 27
收藏 0

普通装饰器

def wapper(func):                 # 外层
	def inner():                  # 添加的功能
		print('xxx')
		func()        
	return inner

@wapper                          # @wapper 类似于 test=wapper(test)
def test():
	print(1)

test()

有参数的装饰器

def wapper(func):
	def inner(*args,**kwargs):         # 原函数中有参数
		print('xxx')
		func(*args,**kwargs)           # 原函数中有参数
	return inner

@wapper
def test(a,b):
	print(1)

test(11,22)

原函数中有返回值的装饰器

通用装饰器

def wapper(func):
	def inner(*args,**kwargs):
		print('xxx')
		res = func(*args,**kwargs)
		return res                           # 原函数有返回值的话,就要return 
	return inner

@wapper
def test(a,b):
	print(1)
	return 'abc'

test(11,22)

装饰器也带参数的装饰器

def decorator(arg):                               # 装饰器也带参数的话,就要多嵌套1层
	def wapper(func):
		def inner(*args,**kwargs):
			if arg == 1:
				print('-----1----')
				res = func(*args,**kwargs)
				return res
			elif arg == 2:
				print('----2----')
				res = func(*args,**kwargs)
				return res
			
		return inner
	return wapper

@decorator(1)
def test1():
	print('我是test1')
	return 1
	
@decorator(2)
def test2():
	print('我是test2')
	return 2

test1()
test2()

 

© 著作权归作者所有

上一篇: Django 查询集
明月知心
粉丝 7
博文 158
码字总数 71882
作品 0
武汉
程序员
私信 提问

暂无文章

PostgreSQL 11.3 locking

rudi
40分钟前
5
0
Mybatis Plus sql注入器

一、继承AbstractMethod /** * @author beth * @data 2019-10-23 20:39 */public class DeleteAllMethod extends AbstractMethod { @Override public MappedStatement injectMap......

一个yuanbeth
今天
8
1
一次写shell脚本的经历记录——特殊字符惹的祸

本文首发于微信公众号“我的小碗汤”,扫码文末二维码即可关注,欢迎一起交流! redis在容器化的过程中,涉及到纵向扩pod实例cpu、内存以及redis实例的maxmemory值,statefulset管理的pod需要...

码农实战
今天
4
0
为什么阿里巴巴Java开发手册中不建议在循环体中使用+进行字符串拼接?

之前在阅读《阿里巴巴Java开发手册》时,发现有一条是关于循环体中字符串拼接的建议,具体内容如下: 那么我们首先来用例子来看看在循环体中用 + 或者用 StringBuilder 进行字符串拼接的效率...

武培轩
今天
8
0
队列-链式(c/c++实现)

队列是在线性表功能稍作修改形成的,在生活中排队是不能插队的吧,先排队先得到对待,慢来得排在最后面,这样来就形成了”先进先出“的队列。作用就是通过伟大的程序员来实现算法解决现实生活...

白客C
今天
78
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部