python 装饰器如何添加参数
python decorator how to add parameters
我有一个 python 装饰器,它会舍入函数的 return 2 位小数:
def round_decimal(func):
def inner(*args, **kwargs):
return round(func(*args, **kwargs),2)
return inner
@round_decimal
def func(a,b,c):
return a/b/c
func(1.33333,3.44444,4.555)
输出为:
0.08
我的问题是我怎样才能使圆小数点成为参数:
像这样:
def round_decimal(func,decimal):
def inner(*args, **kwargs):
return round(func(*args, **kwargs),decimal)
return inner
@round_decimal(3)
def func(a,b,c):
return a/b/c
func(1.33333,3.44444,4.555)
如果四舍五入等于 3,则输出应为:
0.085
你需要一个装饰器工厂,这是一个函数,returns装饰器:
from functools import wraps
def round_decimal(n):
def decorator(fn):
@wraps(fn)
def inner(*args, **kwargs):
return round(fn(*args, **kwargs), n)
return inner
return decorator
@round_decimal(3)
def func(a, b, c):
return a / b / c
print(func(1.33333, 3.44444, 4.555))
输出:
0.085
我有一个 python 装饰器,它会舍入函数的 return 2 位小数:
def round_decimal(func):
def inner(*args, **kwargs):
return round(func(*args, **kwargs),2)
return inner
@round_decimal
def func(a,b,c):
return a/b/c
func(1.33333,3.44444,4.555)
输出为:
0.08
我的问题是我怎样才能使圆小数点成为参数:
像这样:
def round_decimal(func,decimal):
def inner(*args, **kwargs):
return round(func(*args, **kwargs),decimal)
return inner
@round_decimal(3)
def func(a,b,c):
return a/b/c
func(1.33333,3.44444,4.555)
如果四舍五入等于 3,则输出应为:
0.085
你需要一个装饰器工厂,这是一个函数,returns装饰器:
from functools import wraps
def round_decimal(n):
def decorator(fn):
@wraps(fn)
def inner(*args, **kwargs):
return round(fn(*args, **kwargs), n)
return inner
return decorator
@round_decimal(3)
def func(a, b, c):
return a / b / c
print(func(1.33333, 3.44444, 4.555))
输出:
0.085