Update README.md
Signed-off-by: David Rotermund <54365609+davrot@users.noreply.github.com>
This commit is contained in:
parent
87d06fd941
commit
0ec48eb1fb
1 changed files with 106 additions and 2 deletions
|
@ -210,13 +210,117 @@ def f(a, L=None):
|
||||||
L.append(a)
|
L.append(a)
|
||||||
return L
|
return L
|
||||||
|
|
||||||
|
|
||||||
print(f(1)) # -> [1]
|
print(f(1)) # -> [1]
|
||||||
print(f(2)) # -> [2]
|
print(f(2)) # -> [2]
|
||||||
print(f(3)) # -> [3]
|
print(f(3)) # -> [3]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Mutable arguments don't need return values
|
||||||
|
|
||||||
## Arguments and Keywords
|
```python
|
||||||
|
def f(x):
|
||||||
|
x.append(1)
|
||||||
|
|
||||||
|
y = []
|
||||||
|
f(y)
|
||||||
|
print(y)
|
||||||
|
```
|
||||||
|
|
||||||
|
## [Arguments: Positional and Keywords](https://docs.python.org/3/tutorial/controlflow.html#special-parameters)
|
||||||
|
|
||||||
|
> A function definition may look like:
|
||||||
|
|
||||||
|
```python
|
||||||
|
def f(pos1, pos2, /, pos_or_kwd, *, kwd1, kwd2):
|
||||||
|
----------- ---------- ----------
|
||||||
|
| | |
|
||||||
|
| Positional or keyword |
|
||||||
|
| - Keyword only
|
||||||
|
-- Positional only
|
||||||
|
```
|
||||||
|
|
||||||
|
**This is the typical case:**
|
||||||
|
|
||||||
|
[Positional-or-Keyword Arguments](https://docs.python.org/3/tutorial/controlflow.html#positional-or-keyword-arguments)
|
||||||
|
> **If / and * are not present** in the function definition, arguments may be passed to a function by position or by keyword.
|
||||||
|
|
||||||
|
[Keyword Arguments](https://docs.python.org/3/tutorial/controlflow.html#keyword-arguments)
|
||||||
|
|
||||||
|
{: .topic-optional}
|
||||||
|
This is an optional topic!
|
||||||
|
|
||||||
|
> Functions can also be called using keyword arguments of the form kwarg=value.
|
||||||
|
|
||||||
|
[Positional-Only Parameters](https://docs.python.org/3/tutorial/controlflow.html#positional-only-parameters)
|
||||||
|
|
||||||
|
{: .topic-optional}
|
||||||
|
This is an optional topic!
|
||||||
|
|
||||||
|
> If positional-only, the parameters’ order matters, and the parameters cannot be passed by keyword.
|
||||||
|
>
|
||||||
|
> If there is no / in the function definition, there are no positional-only parameters.
|
||||||
|
|
||||||
|
[Keyword-Only Arguments](https://docs.python.org/3/tutorial/controlflow.html#keyword-only-arguments)
|
||||||
|
|
||||||
|
{: .topic-optional}
|
||||||
|
This is an optional topic!
|
||||||
|
|
||||||
|
> To mark parameters as keyword-only, indicating the parameters must be passed by keyword argument, place an * in the arguments list just before the first keyword-only parameter.
|
||||||
|
|
||||||
|
## [Arbitrary Argument Lists](https://docs.python.org/3/tutorial/controlflow.html#arbitrary-argument-lists)
|
||||||
|
|
||||||
|
```python
|
||||||
|
def f(p1, *arguments, **keywords):
|
||||||
|
print("p1:")
|
||||||
|
print(p1)
|
||||||
|
print()
|
||||||
|
|
||||||
|
print("*arguments")
|
||||||
|
for arg in arguments:
|
||||||
|
print(arg)
|
||||||
|
print()
|
||||||
|
|
||||||
|
print("**keywords")
|
||||||
|
for kw in keywords:
|
||||||
|
print(f"{kw}: {keywords[kw]}")
|
||||||
|
print()
|
||||||
|
|
||||||
|
|
||||||
|
f(1, 2, 3, a=4, b=5)
|
||||||
|
```
|
||||||
|
|
||||||
|
Output:
|
||||||
|
|
||||||
|
```python
|
||||||
|
p1:
|
||||||
|
1
|
||||||
|
|
||||||
|
*arguments
|
||||||
|
2
|
||||||
|
3
|
||||||
|
|
||||||
|
**keywords
|
||||||
|
a: 4
|
||||||
|
b: 5
|
||||||
|
```
|
||||||
|
|
||||||
|
[Unpacking Argument Lists](https://docs.python.org/3/tutorial/controlflow.html#unpacking-argument-lists)
|
||||||
|
|
||||||
|
```python
|
||||||
|
def f(a: int, b: int, c: int, d: int) -> int:
|
||||||
|
return a * b * c * d
|
||||||
|
|
||||||
|
print(f(2, 3, 4, 5)) # -> 120
|
||||||
|
|
||||||
|
my_list_a = [2, 3, 4]
|
||||||
|
my_list_b = [2, 3, 4, 5]
|
||||||
|
my_list_c = [3, 4, 5]
|
||||||
|
print(f(*my_list_a, 5)) # -> 120 (plus a false warning: 'Too many arguments for "f"' from MyPy)
|
||||||
|
print(f(*my_list_b)) # -> 120
|
||||||
|
print(f(2, *my_list_c)) # -> 120
|
||||||
|
|
||||||
|
my_tuple_c = [3, 4, 5]
|
||||||
|
print(f(2, *my_tuple_c)) # -> 120
|
||||||
|
```
|
||||||
|
|
||||||
|
## Documentation strings
|
||||||
|
|
Loading…
Reference in a new issue