開発環境
- OS X Lion - Apple(OS)
- BBEdit - Bare Bones Software, Inc.(Text Editor)
- プログラミング言語: Python
『初めてのPython 第3版』(Mark Lutz 著、夏目 大 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-393-7) のIV部(関数)のまとめ演習4.(キーワード引数)を解いてみる。
その他参考書籍
4.(キーワード引数)
コード(BBEdit)
sample.py
#!/usr/bin/env python3.3 #-*- coding: utf-8 -*- def adder(good=10, bad=20, ugly=30): res = good return res + bad + ugly print(adder()) print(adder(100)) print(adder(100, 200)) print(adder(100, 200, 300)) # 次のは例外発生 try: print(adder(100,200,300,400)) except Exception as err: print(err) # 次は正しい # 第2引数(bad)はデフォルト値の20、第1、3引数はそれぞれ1、2になる # よって結果は23 print(adder(ugly=1,good=2)) # 引数の型が加算演算子「+」を使えない同士だと例外発生 try: print(adder(ugly=[1,2])) except Exception as err: print(err) # キーワード引数を任意の数だけ指定 def adder1(**args): flag = 1 res = None for k, v in args.items(): if flag: res = v flag = 0 else: res += v return res print(adder1()) print(adder1(a=10)) print(adder1(a=10,b=20)) print(adder1(a=[1])) print(adder1(a=[1], b=[1,2]))
入出力結果(Terminal)
$ ./sample.py 60 150 330 600 adder() takes from 0 to 3 positional arguments but 4 were given 23 unsupported operand type(s) for +: 'int' and 'list' None 10 30 [1] [1, 2, 1] $
ちなみにJavaScriptの場合。
コード(BBEdit)
var adder = function ( a, b, c ) { a = a || 10, b = b || 20, c = c || 30; return a + b + c; }, // Pythonの場合と違ってJavaScriptの場合は引数の数が多くてもエラーにならずに無視されるだけ result = [adder(), adder(100), adder(100,200), adder(100, 200, 300), adder(100, 200, 300, 400)].join("\n") + "\n"; adder1 = function( ) { var result = arguments[0], i, max; for (i = 1, max = arguments.length; i < max; i += 1) { result += arguments[i]; } return result; }; result += [adder1(), adder1(100), adder1(100, 200)].join("\n"); $('#pre0').text(result);
0 コメント:
コメントを投稿