関数の引数は配列で渡す

ここがちょっと特徴的か?

関数のデフォルト値

def f( i,  foo = "bar" ):
        print foo
        print i

f(10)
#
# bar
# 10

関数のデフォルト値2

def f( i, foo="bar", hoo="book" ):
        print i
        print foo
        print hoo

f( 100, hoo="comic" )

#100
#bar
#comic

デフォルト指定があれば引数は省略可。省略する引数にnullを入れなくて良い。

必要な要素だけ名前指定で書けばいい。

PHP なら null で埋める。

PHPよりPythonの方が便利かも

<?php
public function f( $i, $foo = "var", $hoo = "comic" ){
    echo $i;
    echo $foo;
    echo $hoo
}

f( 100, null, "comic" );
?>

nullも省略して func( $i , , , ,); と書いても良いけれど。わかりにくくなるのでNULLつかってる。

Javascriptでもだいたい同じ。

JavaScriptはちょっと手続きが多いかな。

<script type="text/javascript">
var f = function( i, foo, hoo){
      i   = i;
      foo = foo || "var";
      hoo = hoo || "book";
      document.writeln(i);
      document.writeln(foo);
      document.writeln(hoo);
}

f( 100, null, "comic" );
</script>

Javaだと・・・タイプ量が・・考えたくない(w

関数のデフォルト値3

デフォルト値と可変引数を使うと、さぼれる。

Pythonだと楽で良いかな。JavaScriptだとfunciton.argmentオブジェクトを使う。

def f( i,  *foo, **a ):
        for x in foo :print x
        print i

f(10, "hoge", "moe", "tun")
# hoge
# moe
# tun
# 10

Javaで言う、可変引数。PHPならfunc_get_arg()などのリフレクション関数(?)で参照し利用する。

関数のデフォルト値4

さっきの例は、呼び出し時に使うことも出来る

a = [1,100]
range( *a);
# 1,2,3.....100

配列は関数の呼び出し時に展開される。これは便利。連想配列で、データを渡しやすい。データのパッケージ化のためのEnumやClass書かなくてすみそう。