繁体   English   中英

如何检查函数中执行了哪个return语句?

[英]How to check which return statement was executed in a function?

嗨,我有一个简单的功能:

def check_val(value):
    if value < 10:
        previous = value
        return previous
    else:
        current  = value + 10
        return current

a = check_val(3)

我怎么知道是current还是previous

您可以让函数返回带有必要meta的tuple ,并通过序列拆包进行拆包:

def check_val(value):
    if value < 10:
        previous = value
        return previous, 'previous'
    else:
        current  = value + 10
        return current, 'current'

a, b = check_val(3)

print(a, b)

3 previous

除非返回带有指定退出位置标志的元组,否则您将无法进行操作

def check_val(val):
    if value < 10:
        previous = value
        return previous, False
    else:
        current  = value + 10
        return current, True

a, was_current = check_val(3)

print(a, was_current)  # --> 3 False

好吧,首先,您不能直接执行此操作。 仅凭值本身无法判断哪个返回值为您发送了值。

正如其他答案中所指出的,您当然可以返回一个元组。

不过,根据我的观点,如果您对这两种信息都感兴趣,则应尝试将支票与其他计算脱钩,因为这样可以更轻松地了解返回的值。

这样,也许:

def check_condition(value):
    if value < 10:
        return True
    return False

def get_result(value, condition):
    if condition:
        return value
    else:        
        return value + 10

val = 5
check_result = check_condition(val)
result = get_result(val, check_result)

很难说这是否有意义,因为我不知道您的用例。 在您的特定示例中,我可能会坚持使用元组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM