Pythonにおける関数の利用|【Python・R・エクセル統計学・統計解析】
Pythonにおける関数の利用
関数定義と呼び出し
関数は、繰り返し使う処理をあらかじめ定義しておくために利用します。
Defに続けて関数名と括弧を記述します。関数として実行するプログラムはインデントして記述します。
関数定義の例
def a_function (arg1, arg2) :
“””2つの数値をかけ算して返す”””
return arg1*arg2
def文のすぐ下にある文字列はドキュメンテーション文字列と呼ばれています。
Pythonには、関数の説明をドキュメンテーション文字列に書いておく、という決め事があります。
Pythonでは、関数は呼び出し可能オブジェクトとも呼ばれています。
Pythonで関数を定義すると、関数として呼び出すことができる「変数のようなもの(=オブジェクト)が作られます。
事前に定義されていない変数を使うとエラーになります。
関数を利用するプログラムの前で、関数定義をしておく必要があります。
Pythonでは、関数は変数と同様に扱われます。したがって、別の変数に関数を代入することもできます。
引数の定義
関数にデータを渡して処理をしたいときには、関数に引数を定義しておきます。
先ほどの例では「arg1」と「arg2」が引数に当たります。
「arg1=10」のように、引数名に代入するような記述をすると、引数のデフォルト値を指定できます。
デフォルト値が設定された引数は、呼び出し時に省略することができます。
*paramのように、アスタリスク(*)を使った引数は特殊な意味を持ちます。
定義されている数以上の引数を渡して関数を呼び出すと、あふれた引数がリストとしてparam引数に入って呼び出されます。
引数の数を指定しない関数を作りたいときに利用すると便利です。
**argsのようにアスタリスクを2つ付けた引数を定義することもできます。
このような引数を定義すると、関数は不定個のキーワード引数を受け取れるようになります。
argsには辞書が渡されます。
関数内では、キーワード引数の引数名のキーに、値が登録された状態で利用できます。
関数の戻り値とアンパック代入
関数の外部に処理結果を渡したいときにはreturn文を使います。
Pythonのreturn文には括弧を添える必要はありません。
関数の外に受け渡したいデータをそのまま記述します。先ほどの例ではarg1とarg2をかけ算した値を戻り値としています。
Pythonでは、複数のデータを一度に戻り値として返すことができます。
「return a, b, c」のように複数の値をカンマで区切るか、タプルを返します。
関数を呼び出す側では「a, b, c,=somefunc()」のように複数の値を受け取ることができます。
タプルを自動的に展開して代入することから、これをアンバック代入と呼んでいます。
関数と名前空間
Pythonでは代入を行うことで変数を定義します。
変数は、どこで定義されたかによって利用範囲が制限されます。
Pythonの関数内では、特別な名前空間(Name Space)が作られます。
関数内で定義された変数は、この名前空間の中だけで利用できます。
関数で定義した変数を外部で利用することはできません。
引数も、関数内で定義された変数と同じような扱いを受けます。
関数の処理結果を外部で利用したいときには、戻り値として関数の外部に値を受け渡します。
関数の呼び出し
事前に定義された関数は、次のようにして呼び出せます。
a_function (1, 2)
関数が戻り値を返すようになっている場合は、戻り値を変数に代入したり、計算など別の処理に利用できます。
戻り値がない場合はNoneという特別な値が返されます。
引数の指定方法には2つの方法があります。
上記のように直接値を指定する方法が1つ。そして、次のように変数名をキーワード指定する方法です。
a_function (arg1=1, arg2=2>
キーワード指定をすると、定義順に関係なく、引数を指定できます。
関連記事