Path: blob/main/python/pylang/test/decorators.py
1396 views
# vim:fileencoding=utf-81# License: BSD Copyright: 2015, Kovid Goyal <kovid at kovidgoyal.net>23def double(f):4return def (x):5return 2 * f(x)67def triple(f):8return def(x):9return 3 * f(x)1011@double12def half(x):13return x // 21415@double16def f1(x):17return x1819@double20@triple21def f2(x):22return x2324def append_one(f):25return def(x):26ans = f(x)27ans.push(1)28return ans2930def append_two(f):31return def(x):32ans = f(x)33ans.push(2)34return ans3536@append_two37@append_one38def f3():39return []4041o = {'double':double}4243@o.double44def f4():45return 14647assrt.equal(2, half(2))48assrt.equal(4, f1(2))49assrt.equal(12, f2(2))50assrt.equal(2, f4())51assrt.deepEqual([1, 2], f3())5253def multiply(amt):5455def wrapper(f):56return def ():57return amt * f()5859return wrapper6061@multiply(2)62def two():63return 16465@multiply(3)66def three():67return 16869@multiply(2)70@multiply(2)71def four():72return 17374assrt.equal(2, two())75assrt.equal(3, three())76assrt.equal(4, four())777879