diff options
author | Damien George <damien.p.george@gmail.com> | 2014-04-27 15:50:52 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-04-27 15:50:52 +0100 |
commit | 2827d62e8b5790b2d770b9ce54e25cd56e949f20 (patch) | |
tree | cca15628b4649f6d404990ffc1531ac5aeee0225 /tests/basics | |
parent | 36cbd0db7e4f297c8fc729c842b171af2cfd04c7 (diff) | |
download | micropython-2827d62e8b5790b2d770b9ce54e25cd56e949f20.tar.gz micropython-2827d62e8b5790b2d770b9ce54e25cd56e949f20.zip |
py: Implement keyword-only args.
Implements 'def f(*, a)' and 'def f(*a, b)', but not default
keyword-only args, eg 'def f(*, a=1)'.
Partially addresses issue #524.
Diffstat (limited to 'tests/basics')
-rw-r--r-- | tests/basics/fun-kwonly.py | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/tests/basics/fun-kwonly.py b/tests/basics/fun-kwonly.py new file mode 100644 index 0000000000..8bda68d95a --- /dev/null +++ b/tests/basics/fun-kwonly.py @@ -0,0 +1,68 @@ +# to test keyword-only arguments + +# simplest case +def f(*, a): + print(a) + +f(a=1) + +# with 2 keyword-only args +def f(*, a, b): + print(a, b) + +f(a=1, b=2) +f(b=1, a=2) + +# positional followed by bare star +def f(a, *, b, c): + print(a, b, c) + +f(1, b=3, c=4) +f(1, c=3, b=4) +f(1, **{'b':'3', 'c':4}) + +try: + f(1) +except TypeError: + print("TypeError") + +try: + f(1, b=2) +except TypeError: + print("TypeError") + +try: + f(1, c=2) +except TypeError: + print("TypeError") + +# with **kw +def f(a, *, b, **kw): + print(a, b, kw) + +f(1, b=2) +f(1, b=2, c=3) + +## with a default value; not currently working +#def g(a, *, b=2, c): +# print(a, b, c) +# +#g(1, c=3) +#g(1, b=3, c=4) +#g(1, **{'c':3}) +#g(1, **{'b':'3', 'c':4}) + +# with named star +def f(*a, b, c): + print(a, b, c) + +f(b=1, c=2) +f(c=1, b=2) + +# with positional and named star +def f(a, *b, c): + print(a, b, c) + +f(1, c=2) +f(1, 2, c=3) +f(a=1, c=3) |