当前位置:  开发笔记 > 编程语言 > 正文

调用另一个函数并可选择保留默认参数

如何解决《调用另一个函数并可选择保留默认参数》经验,为你挑选了2个好方法。

我有一个带有一个可选参数的函数,如下所示:

def funA(x, a, b=1):
   return a+b*x

我想编写一个调用的新函数,funA并且还有一个可选参数,但是如果没有传递参数,我想保留默认值funA.

我在想这样的事情:

def funB(x, a, b=None):
   if b:
     return funA(x, a, b)
   else:
     return funA(x, a)

有更多的pythonic方式吗?



1> LeartS..:

我会替换if bif b is not None,所以如果你传递b=0(或任何其他"虚假"值)作为参数funB将传递给它funA.

除此之外,它对我来说似乎相当pythonic:清晰明确.(虽然可能有点无用,取决于你想要做什么!)

一种更加神秘的方式依赖于funB使用正确的关键字参数调用(例如funB(3, 2, b=4):

def funB(x, a, **kwargs):
    return funA(x, a, **kwargs)


神秘的方式是向后退一步.更难阅读而没有功能上的增益.
是的,你是对的("神秘"很少表示积极的东西)并且它在功能上也不是真的相同,但仍然是有用的东西,在某些情况下避免了很多代码,可能不是这个.但是,如果我们有2,3,4 ...可选的默认参数,而不是1,它开始变得方便

2> k4ppa..:
def funA(x, a, b=1):
    return a+b*x

def funB(x, a, b=1):     
   return funA(x, a, b)

设为默认值b=1in funB(),然后始终将其传递给funA()


啊,对不起,我在这个问题上并不清楚:我不知道`funA`的默认参数是什么.(它的代码保存在其他可能改变的地方.)
我会使`funB`独立于`A`使用的实际默认值.理想情况下,如果`funA`选择不同的默认值,您不想更改`funB`.
推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有