如果不是,则返回昂贵的函数调用

时间:2015-06-26 04:22:52

标签: python

我有一个昂贵的功能bt。我需要返回bt(x, y, carries, n)的值,只有它不是None(或== False,无论如何)。我目前正在这样做:

foo = bt(x, y, carries, n)
if foo:
    return foo

这太傻了。另一方面,我不想不必要地拨打bt两次,因为它非常昂贵。如何在不损害性能的情况下优雅地表达这一点? (我正在使用python 2.7.6,但我也对python 3的答案感兴趣。)

1 个答案:

答案 0 :(得分:1)

假设bt返回None时还有更多工作要做(否则无论如何都会返回隐式None

除了为返回值使用有意义的名称之外 - 您已经拥有的是首选方法

bt_retval = bt(x, y, carries, n)
if bt_retval is not None:
    return bt_retval
del bt_retval # optional (it really isn't wasting much memory)
# otherwise carry on