2008年5月13日火曜日

python 関数引数

同僚に教えてもらったことの備忘録.
関数呼び出しの引数に "**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 件のコメント: