相关疑难解决方法(0)

301
推荐指数
3
解决办法
8万
查看次数

什么是有条件地返回函数的最pythonic方式

说我有2个功能.我希望func2返回func1 UNLESS func1返回None,在这种情况下func2返回其他内容.我有两种方法可以做到这一点,但他们都觉得有点不对劲.

我可以说:

def func1(n):
    if (condition):
        return foo

def func2(n):
    if func1(n) is not None:
        return func1(n)
    else:
        return something_else
Run Code Online (Sandbox Code Playgroud)

但这感觉不对,因为我必须两次调用func1(n)(并且func1(n)是一个更大的计算).为了解决这个问题,我可以说:

def func1(n):
    if (condition):
        return foo

def func2(n):
    foo = func1(n)
    if foo is not None:
        return foo
    else:
        return something_else
Run Code Online (Sandbox Code Playgroud)

但这感觉不对,因为我认为我不应该分配一个永远不会再次使用的新变量,只是为了检查func1是否返回None.

有没有更简单的方法来执行此操作,我不必再调用func1两次,而且我不必创建新变量?如果这唯一的方法,你会推荐哪两个?我目前使用第二种方式(我将foo设置为func1返回的位置,而不是返回foo,除非foo == None)

另外,请记住,在我的实际代码中,我调用了几个不同的函数,我想返回第一个不是None的函数,这只是一个更简单的代码版本,可以解决问题.

python return function conditional-statements

4
推荐指数
2
解决办法
430
查看次数