问题“有没有一种方法可以向函数传递可选参数?”描述了如何使用默认关键字参数。
我有两个函数,其中一个调用另一个函数,并且我想能够检测外部函数是否使用可选参数进行调用:
def foo(x1, opt=None):
bar(opt)
def bar(opt=5):
print opt
if __name__ == '__main__':
foo(1) # Should print 5, actually prints None
foo(2, opt=3) # Does print 3
这将打印:
None
3
Foo()可以编写特殊逻辑来检测可选参数是否传递,但是否有一种Pythonic方式可以传递保留其可选性的可选参数而不使用额外的逻辑?
def foo2(x1, opt=None):
if opt is None:
bar()
else:
bar(opt)
默认值必须在内部函数中定义,因为它可能会直接被调用。我也可以为内部和外部函数定义相同的默认值,但是当默认值比整数更复杂时,这样做有点丑陋(违反DRY原则)。
foo
、x1
、opt
等,来解释上下文,这将会有所帮助。我确实理解您的要求,但是如果不了解您试图解决的实际问题,很难提供意见。 - NPE