簡體   English   中英

python多重賦值,可能有例外

[英]python multiple assignment with possible exceptions

我正在使用 python 3.x 我有很多變量和很多功能。 我必須將這些變量分配給函數的值,例如:

x1 = f1()
x2 = f2()
......

這些函數可能會拋出異常,在這種情況下我需要返回 None。 我想寫一個函數來完成這個任務。

assign(x1,f1).

任何想法如何實現它。

不,從函數內部分配給變量是不可能的,但無論如何都不需要將分配封裝到該函數中:

def safely_call(f, *args, **kwargs):
    try:
        return f(*args, **kwargs)
    except Exception:
        logging.exception('Call to %s (%s, %s) failed', f, args, kwargs)
        return None

x1 = safely_call(f1)
x2 = safely_call(f2)

您可以使用裝飾器。 裝飾器捕獲異常並返回 None。

def exception_handler(func):
    def inner_function(*args, **kwargs):
        try:
            return func(*args, **kwargs)
        except:
            return None
    return inner_function

@exception_handler
def myFunc(length):
    pass

這可能是你想要的東西:

def f1():
    return 1/0

def f2():
    return 5

def assign(fn):
    try:
        result = fn()
    except:
        result = None
    return result
    
x1 = assign(f1)
x2 = assign(f2)
print(x1," ",x2)

輸出:

None   5

可能可以進一步縮短和優化,但這個想法應該可行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM