如果该处理程序采用关键字参数,则对第三个元素使用字典:
handlers = [(1, 2, {}), (3, 4, {'keyword': 5), (6, 7, {})]
for route, handler, kwargs in handlers:
some_method(route, handler, **kwargs)
或者您可以使用应用参数*args
句法;在这种情况下,只需抓住all循环中的值:
for args in handlers:
some_method(*args)
If you have要解压缩为至少 2 个参数,请在单独的步骤中执行此操作:
for handler in handlers:
route, handler, args = (handler[0], handler[1], handler[2:])
where args
将是一个包含 0 个或多个元素的元组。
在 Python 3 中,您可以使用 splat (*
) 目标:
for route, handlers, *args in handlers:
where *args
捕获0个或多个extra解包中的值。
另一条路线,到元素handlers
可以通过以下方式完成最小长度:
[(h + (None,) * 3)[:3] for h in handlers]
Demo:
>>> handlers = [(1, 2), (3, 4, 5), (6, 7)]
>>> [(h + (None,) * 3)[:3] for h in handlers]
[(1, 2, None), (3, 4, 5), (6, 7, None)]