SYNTAX
def 関数名 ( arg ):
statement
返値は複数個を指定をできる
def f():
return 1, 2
a, b = f()
# リストを2つ返す
def f():
return ["aaa", "bbb"], ["ccc"]
■ 変数のスコープ
関数内の変数はローカルになる
g = 20
def test():
# ローカル
i = 10
# グローバルも参照できる
print g
# グローバルの値を変更するには global 文を利用する
global g = 10
■ 引数(Argument)
python デフォルト引数
デフォルト引数を利用するときは 引数の後に デフォルト値を設定する
は関数を呼ぶときに省略できる。
dialogbox( msg="test", title="title"):
# デフォルト値があるパラメータは省略できる。
dialogbox()
WARNING
デフォルト値は一度しか評価されない。
関数呼び出し毎には評価されない。
複数のデフォルト引数から、特定の引数だけ値を設定する場合はキーワード引数を使う。
引数を指定しない場合はパラメータが順番に渡される。
dialogbox( title="Prompt" );
キーワードを指定しない場合は 0 番目の引数から順番にわたる
WARNING
固定の引数の後に指定する必要がある。( 可変なため )
# ERROR
test( arg1="foo", 10 )
■ 可変引数
*args に可変引数をタプルとして受け取り, **kwargs でキーワード引数を Dictionary として受け取る
def func(*args, **kwargs):
print args
print kwargs
func( "a", 1, 2, test=1, foo="2" )
■ 無名関数(lambda)
SYNTAX
lambda argument : expression
DESC
単一の式で値を返す処理は 無名関数として定義できる
mul2 = lambda x : x * 2
ret = mul2( 10 )
■ 高階関数
関数を引数としてもらう関数のこと
関数をもらうことができるので、具体的な処理をパラメータ化できる。
関数ポインタのように扱うことができる。
def compare( x,y ):
a = [ 1, 2, 3, 4 ]
a.sort( compare )