2014-10-10 88 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