我有一个昂贵的功能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的答案感兴趣。)
答案 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