開発環境
- 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 コメント:
コメントを投稿