Python Argument list Unpacking

今天遇到一个问题,假设有字符串[ccib_python]s = “INSERT INTO tbl VALUES({0}, {1}, {2}, {3}, {4})”[/ccib_python],如何用format函数将一个元组的内容映射到字符串上去呢?当然,最简单的就是:
[ccb_python]
t = (1, 2, 3, 4)
s.format(t[0], t[1], t[2], t[3])
[/ccb_python]
不过这种做法实在是too simple,too naive了。一点也不pythonic。正确的做法是:
[ccb_python]
s.format(*t)
[/ccb_python]
怎么样,这样是不是看起来顺眼多了?

如果m是一个列表或元组,那么f(*m)将会把列表中的元素分别作为函数f的位置参数。同样,如果m是个字典类型,那么f(*m)将把m中的每个key:value对作为函数f的关键字参数。

参考

  1. Unpacking Argument Lists
  2. The Python IAQ

发表评论

电子邮件地址不会被公开。 必填项已用*标注