プログラムの特定の処理をまとめて関数として作成すると、その部分を関数名()
のようにして呼び出せる。ごく基本的な機能や汎用性のある関数は標準ライブラリや外部ライブラリから利用できるが、無い場合は自作する。
import
文は不要)
import
文が必要な関数import
文も必要)
標準ライブラリはPython本体に含まれている。ライブラリの分類詳細。
標準ライブラリのうち組み込み関数なら関数名()
のようにするだけで呼び出せる。プログラムの同じファイル内で自ら定義した関数を呼び出すときも同様。
関数名()
関数に渡す情報(引数)があれば()
内に入れる。引数として典型的にはオブジェクトを渡す。引数が複数ある場合は,
で区切る。
関数名(引数)
関数名(引数1, 引数2)
関数を実行するときに渡すオブジェクトに注目して実引数と呼び、関数を定義したときの引数(とその名前)に注目して仮引数と呼ぶ。要するに、実行側を実引数、定義側を仮引数と呼んで、混乱を避けることがある。
実引数をどのように渡せるかは、仮引数の定義による。例えば、仮引数の総数より多い実引数を渡すとエラーになる。
下記のように入れ子にした関数は、まず関数2が実行されて、その戻り値が引数として関数1に渡され、関数1が実行される。
関数1(関数2())
実引数の指定方法として、位置引数とキーワード引数の2種類ある。
仮引数の定義の順番どおりに、実引数も指定するのが位置引数。
関数名(引数1, 引数2, 引数3)
仮引数に付けた名前を使って、実引数を=
で指定するのがキーワード引数。順番を気せずに指定できる。
関数名(仮引数名y = オブジェクト, 仮引数名x = オブジェクト)
ただし、位置引数とキーワード引数を混ぜて実行するとき、位置引数を先に指定する(そうでないと位置が分からない)。
関数名(位置引数1, 位置引数2, 仮引数名y = オブジェクト, 仮引数名x = オブジェクト)
関数は特定のモジュールに含まれている。組み込み関数以外の関数を利用する際は、まずファイルの冒頭などにおいてimport
文でモジュール名を指定しておき、実際に呼び出すところではモジュール名.関数名()
のようにする。
import モジュール名
モジュール名.関数名(引数)
また、そもそも外部ライブラリに属する関数については、ダウンロードなど追加設定をしておく必要がある。
よく使う組み込み関数の一覧へ。
関数を呼び出すと、その処理が終わると何らかの値(オブジェクト)が戻ってきて(戻り値)、それを変数に代入するなどして後で使える。
戻り値 = 関数1() # いったん変数に入れる場合
関数2(戻り値)
# 変数を使わないこれも同じ。関数1が実行された後、関数2の実行となる
関数2(関数1()) # 関数1で戻ってきたオブジェクトが関数2の引数になる
戻り値は関数の定義の際にreturn
文で指定する。指定がない場合はNoneが戻る。例えばprint
関数では戻り値がNone
なので、
戻り値 = print('こんにちは')
print(戻り値)
出力はこうなる。
こんにちは
None
def 関数名(引数1, 引数2, …):
処理
# インデントの終わりまでが定義の範囲
詳しくは、関数の作成へ。
関数のうち、オブジェクトに属していてオブジェクト.関数名()
のようにして呼び出すものを特にメソッドという。
例えば文字列オブジェクトには、文字列を操作するための様々な文字列メソッドが用意されている。
早口 = 'すもももももももものうち?!'
# 出現回数をカウントするcount関数
print(早口.count('も')) # 8
上記のように、変数に代入したオブジェクトのメソッド呼び出しは、変数名.メソッド名()
のようにする。