libb.composable
- composable(decorators)[source]
Decorator that takes a list of decorators to be composed.
Useful when list of decorators starts getting large and unruly.
- Parameters:
decorators – List of decorators to compose.
- Returns:
Composed decorator.
Setup:
>>> def m3(func): ... def wrapped(n): ... return func(n)*3. ... return wrapped >>> def d2(func): ... def wrapped(n): ... return func(n)/2. ... return wrapped >>> def p3(n): ... return n+3. >>> @m3 ... @d2 ... def plusthree(x): ... return p3(x) >>> @composable([d2, m3]) ... def cplusthree(x): ... return p3(x)
Note: composed decorators are not interchangeable with
compose:>>> func = compose(m3, d2, p3)(4) >>> hasattr(func, '__call__') True >>> compose(lambda n: n*3., lambda n: n/2., p3)(4) 10.5
What they do allow is consolidating longer decorator chains:
>>> plusthree(4) 10.5 >>> cplusthree(4) 10.5