如果函数满足某个条件而不使用额外变量,则使用函数的返回值

2024-04-25 19:20:19 发布

您现在位置:Python中文网/ 问答频道 /正文

假设函数some_function(x)返回一个整数,我目前正在执行以下操作:

def another_function():
    # stuff...
    result = some_function(x)
    if result != 0:
        return result
    # else: more stuff (unrelated to result)...

我想要的是找到最好的写作方法

if some_function(x) != 0:
    return some_function(x)

当然不用调用some_function(x)两次。你知道吗

有没有更“聪明”的惯用方法在python3中编写它,而不使用result?你知道吗


Tags: to函数returnifdefmoreanotherfunction
3条回答

另一个选项是定义一个异常,当函数给出0作为结果时引发。如果是这样的话,抓住错误并做些别的事情。你知道吗

class ZeroResult(Exception):
    def __init__(self):
        raise AttributeError

def some_function(x):
    #...
    if result==0:
        raise ZeroResult
    else:
        return result

def another_function():
    # stuff
    try:
        return some_function(x)
    except ZeroResult:
        # more stuff

我将在这个答案中回应我的评论,并建议你目前所做的是最好的方法。你知道吗

Dimgolds回答说,如果你继续并实现了一个C.M,基本上可以归结为做同样的事情。FLabs方法使用一个异常,如果不是异常的话,它会引入不必要的开销。你知道吗

您所做的是简单、明确和完全可以理解的;在Python中是惯用的。继续这样做。你知道吗

由于在很少的地方对结果进行寻址,因此必须运行两次或将其保存到一个变量中。你知道吗

另一个选项(类似于使用result)是使用“with”语句并继续else部分:

with some_function(x) as result:
    if result: return result

此语法以后不会保留结果变量。你知道吗

相关问题 更多 >