From a549bb2bc292c4812cab5a95fe3510c0d9cb57e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jure=20=C5=A0orn?= Date: Sun, 24 Feb 2019 01:02:43 +0100 Subject: [PATCH] Splat --- README.md | 45 +++++++++++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 39aeb5a..f91bd7f 100644 --- a/README.md +++ b/README.md @@ -434,9 +434,23 @@ now.strftime('%Y%m%d%H%M%S') # '20180315002834' ``` -Splat Operator --------------- +Arguments +--------- ### Inside Function Call +```python +() # f(0, 0) +() # f(x=0, y=0) +(, ) # f(0, y=0) +``` + +### Inside Function Definition +```python +def f() # def f(x, y) +def f() # def f(x=0, y=0) +def f(, ) # def f(x, y=0) +``` + +### Splat operator **`'*'` is the splat operator, that takes a collection as input, and expands it into actual positional arguments in the function call.** ```python @@ -450,8 +464,7 @@ func(*args, **kwargs) func(1, 2, x=3, y=4, z=5) ``` -### Inside Function Declaration -#### Example: +#### Splat example: ```python def add(*a): return sum(a) @@ -462,24 +475,24 @@ def add(*a): 6 ``` -#### Legal uses: +### Legal Argument Definitions and Calls ```python -def f(*args): pass # f(1, 2, 3) -def f(x, *args): pass # f(1, 2, 3) -def f(*args, z): pass # f(1, 2, z=3) -def f(x, *args, z): pass # f(1, 2, z=3) +def f(*args) # f(1, 2, 3) +def f(x, *args) # f(1, 2, 3) +def f(*args, z) # f(1, 2, z=3) +def f(x, *args, z) # f(1, 2, z=3) ``` ```python -def f(**kwargs): pass # f(x=1, y=2, z=3) -def f(x, **kwargs): pass # f(x=1, y=2, z=3) or f(1, y=2, z=3) +def f(**kwargs) # f(x=1, y=2, z=3) +def f(x, **kwargs) # f(x=1, y=2, z=3) | f(1, y=2, z=3) ``` ```python -def f(*args, **kwargs): pass # f(x=1, y=2, z=3) or f(1, y=2, z=3) or f(1, 2, z=3) or f(1, 2, 3) -def f(x, *args, **kwargs): pass # f(x=1, y=2, z=3) or f(1, y=2, z=3) or f(1, 2, z=3) or f(1, 2, 3) -def f(*args, y, **kwargs): pass # f(x=1, y=2, z=3) or f(1, y=2, z=3) -def f(x, *args, z, **kwargs): pass # f(x=1, y=2, z=3) or f(1, y=2, z=3) or f(1, 2, z=3) +def f(*args, **kwargs) # f(x=1, y=2, z=3) | f(1, y=2, z=3) | f(1, 2, z=3) | f(1, 2, 3) +def f(x, *args, **kwargs) # f(x=1, y=2, z=3) | f(1, y=2, z=3) | f(1, 2, z=3) | f(1, 2, 3) +def f(*args, y, **kwargs) # f(x=1, y=2, z=3) | f(1, y=2, z=3) +def f(x, *args, z, **kwargs) # f(x=1, y=2, z=3) | f(1, y=2, z=3) | f(1, 2, z=3) ``` ### Other Uses @@ -1006,7 +1019,7 @@ from argparse import ArgumentParser, FileType .add_argument('-', '--', action='store_true') # Flag .add_argument('-', '--', type=) # Option .add_argument('', type=, nargs=1) # First argument -.add_argument('', type=, nargs='+') # Ramaining arguments +.add_argument('', type=, nargs='+') # Remaining arguments = .parse_args() value = . ```