【发布时间】:2020-01-05 16:59:48
【问题描述】:
我正在尝试编写一个带有函数作为可选参数的函数。我想用第二个函数作为过滤函数
def func1(arg1, arg2, func2, arg4=None):
# do something with args1,2
# do something with arg4 if called
# do something with func2 if called
def func2(arg5):
# do something
func1(41, "hello there")
在上面的示例中,我没有调用 func2 。我知道我可以使用装饰器,即
def func1(arg1, arg2, func2, arg4=None):
# do something with args1,2
func2()
# do something with arg4 if called
def func2(arg5):
# do something
func1(41, "hello there")
我不确定如何实现或调用可选装饰器。我认为最好的方法是将 func2 的参数作为 func1 中的参数,func1(arg1,arg2,arg5=None,arg4=None) 然后在 func1 中我可以有这样的逻辑:
def func1(arg1, arg2, arg5=None, arg4=None):
# do something with args1,2
if arg5 is not None:
func2(arg5)
# do something with arg4 if called
def func2(arg5):
# do something
func1(41, "hello there")
任何建议将不胜感激!
【问题讨论】:
-
我很难理解这里的问题。我建议使用真正的语法。您指的是装饰器,但我没有看到。你能澄清一下你需要什么吗?
-
在您的第一个示例中,
func2不是可选参数调用,否则会产生异常。 -
... I haven't called func2...-> 你还没有通过func2。 docs.python.org/3/tutorial/…