从修改默认值的函数调用具有不同默认参数的多个函数
Calling several functions with different default parameters from a function modifying the default values
我有几个带有默认参数的函数,它们是从高级函数调用的,我希望能够从其他函数修改一定数量的参数。举个例子
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
仅传递给以它作为参数的函数?
问题似乎是您正在调用 printing(what, **kwargs)
但函数定义中没有 **kwargs
关键字。只需将 **kwargs
添加到您的第一个函数,一切正常
def printing(what, n = 3, **kwargs):
for _ in range(n):
print(what)
outer('hello', 4, i = 4)
# hello
# hello
# hello
# 4
# 4
# 4
# 4
我有几个带有默认参数的函数,它们是从高级函数调用的,我希望能够从其他函数修改一定数量的参数。举个例子
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
仅传递给以它作为参数的函数?
问题似乎是您正在调用 printing(what, **kwargs)
但函数定义中没有 **kwargs
关键字。只需将 **kwargs
添加到您的第一个函数,一切正常
def printing(what, n = 3, **kwargs):
for _ in range(n):
print(what)
outer('hello', 4, i = 4)
# hello
# hello
# hello
# 4
# 4
# 4
# 4