2014-10-10 138 views
0

traceback.format_exception()需要三個參數。我可以將元組轉換爲「inline」參數列表嗎?

sys.exc_info()返回爲traceback.format_exception()

必需的參數三個元素的元組是否有避免兩線 「轉換」 的任何方式:

a,b,c = sys.exc_info() 
error_info = traceback.format_exception(a,b,c) 

顯然

error_info = traceback.format_exception(sys.exc_info()) 

不起作用,因爲format_exception()需要三個參數,而不是一個元組(facepalm!)

在一個聲明中有這樣做的一些整潔的方式嗎?

回答

2

可以使用*操作解壓從列表或元組參數:

error_info = traceback.format_exception(*sys.exc_info()) 

下面是來自docs的例子:

>>> range(3, 6)    # normal call with separate arguments 
[3, 4, 5] 
>>> args = [3, 6] 
>>> range(*args)   # call with arguments unpacked from a list 
[3, 4, 5] 
+0

http://stackoverflow.com/a/3394898/334999檢查一下。關於*和** – Shuo 2014-10-10 10:35:41

+0

Dang的詳細說明當時,我正在Google上搜索「展開」,顯然我應該用Google搜索「解包」!感謝堆,接受在10分鐘內來臨嘀嗒:) – GreenAsJade 2014-10-10 10:36:35