У меня есть несколько функций с параметрами по умолчанию, которые вызываются из функции высокого уровня, и я хотел бы иметь возможность изменять определенное количество этих параметров из других функций. Давайте приведем пример
def printing(what, n = 3):
for _ in range(n):
print(what)
def printing_number(number, i=3):
for _ in range(i):
print(number)
def outer(what, number):
printing(what)
printing_number(number)
outer
это функция, которая будет вызываться, и я хотел бы иметь возможность поставить что-то вроде
outer('hello', 4, i = 4)
и затем он выполнит printing('hello', n=3)
и printing_number(4, i=4)
.
Я пробовал с ** kwargs следующим образом:
def printing(what, n = 3):
for _ in range(n):
print(what)
def printing_number(number, i=3):
for _ in range(i):
print(number)
def outer(what, number, **kwargs):
printing(what, **kwargs)
printing_number(number, **kwargs)
Тем не менее, он просто корректно работает с параметром по умолчанию, если я наберу код outer('hello',3,i=4)
, я получу сообщение об ошибке, говорящее о том, что печать получила неожиданный параметр.
Итак, есть ли способ, которым i
передается только функции, которая имеет его в качестве параметра?