Лев Борисовский, 125 группа CorrectFloat 14500
Бозин Павел, 124 группа CorrectFloat 14329
n1"""n
2Написать класс-параметрический декоратор Fix(n), с помощью которого все 
>вещественные (как позиционные, так и именные) параметры произвольной дек 
>орируемой функции, а также её возвращаемое значение, округляются до n-го 
> знака после запятой (1 ⩽ n ⩽ 16). Если какие-то параметры функции оказа 
>лись не вещественными, или не вещественно возвращаемое значение, эти объ 
>екты не меняются. 
3"""
4from functools import wraps1from functools import wraps
52
6class Fix:3class Fix:
74
8    def __init__(self, n):5    def __init__(self, n):
9        self.n = n6        self.n = n
107
n11    def __call__(self, fun):n8    def __call__(self, func):
129
n13        @wraps(fun)n10        @wraps(func)
14        def wrapper(*args, **kwargs):11        def wrapper(*args, **kwargs):
15            new_args = tuple((round(arg, self.n) if isinstance(arg, floa12            new_args = tuple((round(arg, self.n) if isinstance(arg, floa
>t) else arg for arg in args))>t) else arg for arg in args))
t16            new_kwargs = {k: round(v, self.n) if isinstance(v, float) elt13            new_kwargs = {key: round(value, self.n) if isinstance(value,
>se v for k, v in kwargs.items()}> float) else value for key, value in kwargs.items()}
17            result = fun(*new_args, **new_kwargs)14            result = func(*new_args, **new_kwargs)
18            if isinstance(result, float):15            if isinstance(result, float):
19                result = round(result, self.n)16                result = round(result, self.n)
20            return result17            return result
21        return wrapper18        return wrapper
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op