関数呼び出しの引数に "**kw" のような書き方をするのは,
実質的に"arg1=var1, arg2=var2, arg3=var3" するのと同じ.
辞書の場合はたまたま,key, value のペアになっているので,
関数の呼び出しの際に "**dict" のように引数を書いてもうまく動く.
一方,辞書を辞書として扱う場合には,"**"はつけずに,
オブジェクトとして処理させればよい
1 def func1 (**kw):
2 """ """
3 for k,v in kw.iteritems():
4 print k,v
5
6 def func2 (kw):
7 """ """
8 for k,v in kw.iteritems():
9 print k,v
10
11 def main():
12 dict = {'file':'hoge', 'line':123, 'flen':24}
13 func1(**dict)
14 func1(file='hoge', line=123, flen=24)
15 func2(dict)
16 func2(file='hoge', line=123, flen=24)
17
18 #-------------------------------------------------
19 if __name__ == "__main__":
20 main()
0 件のコメント:
コメントを投稿