[英]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.