python基础装饰器及能接收参数的装饰器

北京今天天儿不错,在家写点博客吧。。。。
常用的装饰器如下

from functools import wraps
def decorator(func):
	"""
	使用系统内置的warps装饰器能够使被装饰的函数保留他原始的信息,
	直观一点就是在你print(func.__name__)的时候这个函数的名字仍然是func而不是new_func.
	"""
	@warps 
	def new_func(*args,**kwargs):
		print('添加装饰')
		return func(*args,**kwargs)
	return new_func
"""
只需在需要装饰的函数前@你写好的装饰器即可,装饰器格式如上
"""
@decorator
def func():
	print('原函数')

但是有的时候我们需要更加多样功能的装饰器,譬如可以根据接收参数不同而进行不同的装饰,举个栗子。

@decorator(method='get')
def func():
	pass

这就是一个典型的可以接收参数的装饰器,那我们如何实现的,看代码。

def decorator(method):
	def decorat(func):
		def new_func(*args,**kwargs):
			if method == "get":
				print('进行get装饰')
				return func(*args,**kwargs)
			elif method == "post":
				print('进行post装饰')
				return func(*args,**kwargs)
			else:
				method_copy = method				
				print('进行其他类型装饰'+method_copy[0:1])
				return func(*args,**kwargs)
		return new_func
	return decorator

@decorator(method='get')
def func():
	pass
"""
这样就能根据不同的参数进行不同的装饰啦,但是有一点需要注意,如果需要对传入的型参进行更改,
那么就需要从新再新建一个变量来继承传入型参的值,在此装饰器中就是method_copy
"""
				

睡了,睡了,雯雯的脚还受伤了,难受。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值