#navi_header|Python| * 関数定義の文例集 ** 引数無し or 単純な引数 def f1(): print "Hello f1!" def f2(name): print "Hello " + name + "!" f1() f2("Huga") → Hello f1! Hello Huga! ** デフォルト引数 def f3(a1, a2 = 'default'): print "a1 = " + str(a1) print "a2 = " + str(a2) f3(123) f3(456, 789) → a1 = 123 a2 = default a1 = 456 a2 = 789 ** デフォルト引数とキーワード引数 def f4(who, greet = "Hello", times = 5): print greet * times, print ", " + who f4("Taro", "Bonjour", 3) f4("Hanako", greet = "Good Night", times=2) f4("Fuga", times=3) f4("Bohe", greet = "Good-Bye") → BonjourBonjourBonjour , Taro Good NightGood Night , Hanako HelloHelloHello , Fuga Good-ByeGood-ByeGood-ByeGood-ByeGood-Bye , Bohe ** 可変引数 def f5( a1, *args): print repr(a1) print repr(args) for i in args: print i f5(1, 2, 3) f5(*(4, 5, 6)) → 1 (2, 3) 2 3 4 (5, 6) 5 6 内部的にはタプルとして渡ってくる。 ** 可変キーワード引数 def f6(a1, a2, **opts): print "a1 = " + str(a1) print "a2 = " + str(a2) for (k, v) in opts.items(): print str(k) + " = " + str(v) f6('foo', 'bar', buz = 'hoge', aaa = 123) → a1 = foo a2 = bar buz = hoge aaa = 123 ** 再帰によるfor文を使わないループ処理 Erlangを勉強した事があったので、こういう小手先技も思いつきました。 def f7(*l): head = l[0] r = l[1:] print head if len(r) != 0: f7(*r) f7(1, 2, 3, 4, 5) → 1 2 3 4 5 #navi_footer|Python|