相关疑难解决方法(0)

如果它们是None,则调用没有可选参数的函数

有一个带有可选参数的函数.

def alpha(p1="foo", p2="bar"):
     print('{0},{1}'.format(p1, p2))
Run Code Online (Sandbox Code Playgroud)

让我迭代一下当我们以不同方式使用该函数时会发生什么:

>>> alpha()
foo,bar
>>> alpha("FOO")
FOO,bar
>>> alpha(p2="BAR")
foo,BAR
>>> alpha(p1="FOO", p2=None)
FOO,None
Run Code Online (Sandbox Code Playgroud)

现在考虑我想要调用它的情况,alpha("FOO", myp2)并且myp2将包含要传递的值,或者是None.但即使该函数处理p2=None,我希望它使用其默认值"bar".
也许这令人困惑,所以让我改写一下:

如果myp2 is None,打电话alpha("FOO").不用了,打电话alpha("FOO", myp2).

区别是相关的,因为alpha("FOO", None)结果不同alpha("FOO").

我如何简洁(但可读)做出这种区分?

一种可能性通常是在内部检查无alpha,这将被鼓励,因为这将使代码更安全.但是假设alpha它实际上应该在其他地方使用,None就像它一样.

我想在来电方面处理这个问题.

一种可能性是区分案例:

if myp2 is None:
    alpha("FOO")
else:
    alpha("FOO", myp2)
Run Code Online (Sandbox Code Playgroud)

但是,当有多个这样的论点时,这很快就会成为很多代码.(指数,2 ^ n)

另一种可能性是简单地做alpha("FOO", myp2 or "bar"),但这需要我们知道默认值.通常,我可能会采用这种方法,但我可能稍后更改默认值, …

python python-3.x

29
推荐指数
4
解决办法
6361
查看次数

标签 统计

python ×1

python-3.x ×1