2013年3月7日木曜日

開発環境

『初めての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 コメント:

コメントを投稿