Pythonのsplat演算子

StackOverFlowで見つけて面白かったのでメモ

dictに*を1つつけるとキーが順番に渡されますが、2つつけるとキーと同名の引数に値が渡されるんですね

def draw_point(x, y):
    print x, y

point_foo = (3, 4)
point_bar = {'y': 3, 'x': 2}

draw_point(*point_foo)
# => 3 4

draw_point(*point_bar)
#  => y x

draw_point(**point_bar)
# => 2 3


# 余計なキーがあるとエラー
point_bar = {'x': 1, 'y': 3, 'z': 2}
try:
    draw_point(**point_bar)
except TypeError, e:
    print e
# => draw_point() got an unexpected keyword argument 'z'

覚えとこう


参考)
http://stackoverflow.com/questions/101268/hidden-features-of-python#111176