|
|
|
|
@ -362,31 +362,6 @@ Python ожидает, что все позиционные аргументы
|
|
|
|
|
```
|
|
|
|
|
То есть -1 * 9 + 2 = -7.
|
|
|
|
|
|
|
|
|
|
Если захочется НЕ передавать b, придется переопределить функцию так, чтобы
|
|
|
|
|
именованный параметр b был в конце, а позиционный кортеж - перед ним. Например,
|
|
|
|
|
так:
|
|
|
|
|
```
|
|
|
|
|
>>> def func4(a, *kort7, b = 7):
|
|
|
|
|
smm = 0
|
|
|
|
|
for elt in kort7:
|
|
|
|
|
smm += elt
|
|
|
|
|
return a * smm + b
|
|
|
|
|
|
|
|
|
|
>>> func4(5, *[1, 2, 3])
|
|
|
|
|
37
|
|
|
|
|
```
|
|
|
|
|
Примечание:
|
|
|
|
|
|
|
|
|
|
В общем виде *args и **kwargs - способы передать не уточненное заранее число
|
|
|
|
|
элементов, причем:
|
|
|
|
|
|
|
|
|
|
*args — переменное количество позиционных аргументов. Переданные с одной
|
|
|
|
|
звездочкой аргументы собираются в кортеж.
|
|
|
|
|
|
|
|
|
|
**kwargs — переменное количество именованных аргументов. Все переданные аргументы,
|
|
|
|
|
которые указываются по имени, собираются в словарь.
|
|
|
|
|
|
|
|
|
|
Как и всегда, *args всегда должно идти перед **kwargs.
|
|
|
|
|
|
|
|
|
|
### Пункт 4.9. Изменение значений объектов, используемых в качестве аргументов функции.
|
|
|
|
|
```
|
|
|
|
|
|