Python 装饰器

原创
2017/07/31 01:32
阅读数 49

普通装饰器

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()

 

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部