# the calls: def call0ab(f): """ >>> call0ab(b) Traceback (most recent call last): TypeError: b() takes exactly 3 positional arguments (2 given) >>> call0ab(c) 1 2 1 >>> call0ab(d) 1 2 88 """ f(a=1,b=2) def call0abc(f): """ >>> call0abc(b) 1 2 3 >>> call0abc(c) 1 2 3 >>> call0abc(d) 1 2 3 >>> call0abc(e) 1 2 3 [] >>> call0abc(f) 1 2 3 42 >>> call0abc(m) 1 2 3 """ f(a=1,b=2,c=3) def call2(f): """ >>> call2(c) 1 2 1 >>> call2(d) 1 2 88 >>> call2(e) 1 2 88 [] >>> call2(f) Traceback (most recent call last): TypeError: f() needs keyword-only argument c >>> call2(g) Traceback (most recent call last): TypeError: g() needs keyword-only argument c >>> call2(m) Traceback (most recent call last): TypeError: m() needs keyword-only argument c """ f(1,2) def call3(f): """ >>> call3(b) 1 2 3 >>> call3(c) 1 2 3 >>> call3(d) Traceback (most recent call last): TypeError: d() takes exactly 2 positional arguments (3 given) >>> call3(e) 1 2 3 [] >>> call3(f) Traceback (most recent call last): TypeError: f() takes exactly 2 positional arguments (3 given) >>> call3(g) Traceback (most recent call last): TypeError: g() takes exactly 2 positional arguments (3 given) >>> call3(h) Traceback (most recent call last): TypeError: h() needs keyword-only argument c >>> call3(k) Traceback (most recent call last): TypeError: k() needs keyword-only argument f >>> call3(m) Traceback (most recent call last): TypeError: m() takes at most 2 positional arguments (3 given) """ f(1,2,3) def call4(f): """ >>> call4(b) Traceback (most recent call last): TypeError: b() takes exactly 3 positional arguments (4 given) >>> call4(c) Traceback (most recent call last): TypeError: c() takes at most 3 positional arguments (4 given) >>> call4(e) Traceback (most recent call last): TypeError: e() takes at most 3 positional arguments (4 given) """ f(1,2,3,4) def call2c(f): """ >>> call2c(d) 1 2 1 >>> call2c(e) 1 2 1 [] >>> call2c(f) 1 2 1 42 >>> call2c(g) Traceback (most recent call last): TypeError: g() needs keyword-only argument f >>> call2c(m) 1 2 1 """ f(1,2, c=1) def call2d(f): """ >>> call2d(d) Traceback (most recent call last): TypeError: d() got an unexpected keyword argument 'd' >>> call2d(e) 1 2 88 [('d', 1)] >>> call2d(k) Traceback (most recent call last): TypeError: k() needs keyword-only argument f """ f(1,2, d=1) def call3d(f): """ >>> call3d(h) Traceback (most recent call last): TypeError: h() needs keyword-only argument c """ f(1,2,3, d=1) def call2cd(f): """ >>> call2cd(f) 1 2 1 2 >>> call2cd(m) Traceback (most recent call last): TypeError: m() got an unexpected keyword argument 'd' """ f(1,2, c=1, d=2) def call2ce(f): """ >>> call2ce(f) Traceback (most recent call last): TypeError: f() got an unexpected keyword argument 'e' """ f(1,2, c=1, e=2) def call2cde(f): """ >>> call2cde(e) 1 2 1 [('d', 2), ('e', 3)] """ f(1,2, c=1, d=2, e=3) def call2cf(f): """ >>> call2cf(g) 1 2 1 42 17 2 [] >>> call2cf(h) 1 2 1 42 17 2 () [] >>> call2cf(k) 1 2 1 42 17 2 () [] """ f(1,2, c=1, f=2) def call6cf(f): """ >>> call6cf(h) 1 2 1 42 17 2 (3, 4, 5, 6) [] """ f(1,2,3,4,5,6, c=1, f=2) def call6df(f): """ >>> call6df(k) 1 2 3 1 17 2 (4, 5, 6) [] """ f(1,2,3,4,5,6, d=1, f=2) def call2cfe(f): """ >>> call2cfe(h) 1 2 1 42 3 2 () [] >>> call2cfe(k) 1 2 1 42 3 2 () [] """ f(1,2, c=1, f=2, e=3) def call2cefd(f): """ >>> call2cefd(g) 1 2 1 11 0 2 [] """ f(1,2, c=1, e=0, f=2, d=11) def call2cfex(f): """ >>> call2cfex(g) 1 2 1 42 0 2 [('x', 25)] """ f(1,2, c=1, f=2, e=0, x=25) def call6argscfexy(f): args = (1,2,3,4,5,6) f(*args, c=1, f=2, e=3, x=25, y=11) def call6cfexy(f): """ >>> call6cfexy(h) 1 2 1 42 3 2 (3, 4, 5, 6) [('x', 25), ('y', 11)] """ f(1,2,3,4,5,6, c=1, f=2, e=3, x=25, y=11) def call6dfexy(f): """ >>> call6dfexy(k) 1 2 3 1 3 2 (4, 5, 6) [('x', 25), ('y', 11)] """ f(1,2,3,4,5,6, d=1, f=2, e=3, x=25, y=11) # the called functions: def b(a, b, c): print a,b,c def c(a, b, c=1): print a,b,c def d(a, b, *, c = 88): print a,b,c def e(a, b, c = 88, **kwds): kwlist = list(kwds.items()) kwlist.sort() print a,b,c, kwlist def f(a, b, *, c, d = 42): print a,b,c,d def g(a, b, *, c, d = 42, e = 17, f, **kwds): kwlist = list(kwds.items()) kwlist.sort() print a,b,c,d,e,f, kwlist def h(a, b, *args, c, d = 42, e = 17, f, **kwds): kwlist = list(kwds.items()) kwlist.sort() print a,b,c,d,e,f, args, kwlist def k(a, b, c=1, *args, d = 42, e = 17, f, **kwds): kwlist = list(kwds.items()) kwlist.sort() print a,b,c,d,e,f, args, kwlist def m(a, b=1, *, c): print a,b,c