diff options
author | Damien George <damien.p.george@gmail.com> | 2014-03-30 21:21:24 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-03-30 21:21:24 +0100 |
commit | 230fec77d7bd9bae5e86a009d549550d6047fd07 (patch) | |
tree | 2620e7898155d2973153fba69cab5aab0ace54d0 /tests | |
parent | f6a820903afe12760b27553831c3bdb16c50b985 (diff) | |
download | micropython-230fec77d7bd9bae5e86a009d549550d6047fd07.tar.gz micropython-230fec77d7bd9bae5e86a009d549550d6047fd07.zip |
py: Implement positional and keyword args via * and **.
Extends previous implementation with * for function calls to * and **
for both function and method calls.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/basics/fun-calldblstar.py | 17 | ||||
-rw-r--r-- | tests/basics/fun-callstar.py | 20 | ||||
-rw-r--r-- | tests/basics/fun-callstardblstar.py | 17 |
3 files changed, 54 insertions, 0 deletions
diff --git a/tests/basics/fun-calldblstar.py b/tests/basics/fun-calldblstar.py new file mode 100644 index 0000000000..aae9828cf7 --- /dev/null +++ b/tests/basics/fun-calldblstar.py @@ -0,0 +1,17 @@ +# test calling a function with keywords given by **dict + +def f(a, b): + print(a, b) + +f(1, **{'b':2}) +f(1, **{'b':val for val in range(1)}) + +# test calling a method with keywords given by **dict + +class A: + def f(self, a, b): + print(a, b) + +a = A() +a.f(1, **{'b':2}) +a.f(1, **{'b':val for val in range(1)}) diff --git a/tests/basics/fun-callstar.py b/tests/basics/fun-callstar.py index 49b40d9594..255563b26b 100644 --- a/tests/basics/fun-callstar.py +++ b/tests/basics/fun-callstar.py @@ -1,3 +1,5 @@ +# function calls with *pos + def foo(a, b, c): print(a, b, c) @@ -11,3 +13,21 @@ foo(1, 2, *[100]) # Iterator foo(*range(3)) + +# method calls with *pos + +class A: + def foo(self, a, b, c): + print(a, b, c) + +a = A() +a.foo(*(1, 2, 3)) +a.foo(1, *(2, 3)) +a.foo(1, 2, *(3,)) +a.foo(1, 2, 3, *()) + +# Another sequence type +a.foo(1, 2, *[100]) + +# Iterator +a.foo(*range(3)) diff --git a/tests/basics/fun-callstardblstar.py b/tests/basics/fun-callstardblstar.py new file mode 100644 index 0000000000..f2fd29107e --- /dev/null +++ b/tests/basics/fun-callstardblstar.py @@ -0,0 +1,17 @@ +# test calling a function with *tuple and **dict + +def f(a, b, c, d): + print(a, b, c, d) + +f(*(1, 2), **{'c':3, 'd':4}) +f(*(1, 2), **{['c', 'd'][i]:(3 + i) for i in range(2)}) + +# test calling a method with *tuple and **dict + +class A: + def f(self, a, b, c, d): + print(a, b, c, d) + +a = A() +a.f(*(1, 2), **{'c':3, 'd':4}) +a.f(*(1, 2), **{['c', 'd'][i]:(3 + i) for i in range(2)}) |