簡體   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