Python関数の基本:使い方と作り方・引数と戻り値【初心者編】
公開日:2021.07.30
スキルアップPythonの文法を学び、ロジックを組めるようになってきたら、次に覚えたいのが「関数」です。関数を自由に作り、使えるようになることで、処理の再利用が可能となるため、処理やテストの効率化が期待できます。
本記事では、Pythonにおける「関数」の基本を解説します。Pythonの注意したいimportの扱いについても解説しているので、ぜひ最後までご覧ください。
Pythonにおける「関数」の基本
Pythonにおける「関数」とは、作成したひとまとまりのロジックに名前を付け、再利用を可能にする方法です。数学の関数と同様、「ある値を渡すと処理を行いある値を返す」という動きをします。
関数に渡す値のことを「引数」、関数を実行して得られる結果のことを「戻り値(返り値)」と呼びます。関数の仕様によっては、引数や戻り値の省略も可能です。Pythonの関数は、戻り値がない場合、「None」(「値がない」という意味の値)を返します。
Pythonには、言語として提供されている「組み込み関数」と、ユーザーが作成する「ユーザー定義関数」があります。関数の呼び出し方は、組み込み関数・ユーザー定義関数ともに同じです。
Python関数の呼び出し方
Python関数の呼び出し方について、基本の呼び出し方、別ファイルに定義された関数の呼び出し方を解説します。また、Pythonにて提供している主要な組み込み関数も紹介します。
基本の呼び出し方
Python関数の基本的な呼び出し方は、以下の通りです。
【戻り値のある関数の呼び出し方】
変数名 = 関数名(引数1, 引数2, …)
【戻り値のない関数の呼び出し方】
関数名(引数1, 引数2, …)
【引数のない関数の呼び出し方】
変数名 = 関数名()
関数の仕様によって、上記の呼び出し方を使い分けます。それぞれの具体的なコード例は以下の通りです。
【戻り値のある関数の呼び出し方】
result = get_myname(1,’First’,5)
【戻り値のない関数の呼び出し方】
get_myname(1,’First’,5)
【引数のない関数の呼び出し方】
result = get_myname()
ここまで紹介してきた関数の引数定義は、「位置引数」と呼ばれます。この方法とは別に、以下のような「キーワード引数」と呼ばれる引数定義も可能です。
関数名(arg2=引数2, arg3=引数3, arg1=引数1)
キーワード引数では、「引数名=値」というキーワードを使って、引数の順番を決めます。上記の例では、引数1は、定義では3番目になっていますが、実際は1番目の引数として扱われます。
別ファイルに定義された関数の呼び出し方
Pythonのソースファイルは、一般的に同じ種類の関数をファイルにまとめて作成します。そのため、別ファイルに定義されている関数呼び出しも一般的に行う処理です。ただし、Pythonは同階層以外の関数を呼び出せません。
別階層の関数を呼び出せるようにするには、環境変数PYTHONPATHにインポート対象のパスを追加しなければなりません。環境変数の追加方法は、以下の通りです。
【環境変数PYTHONPATHにインポート対象のパスを追加するコマンド】
export PYTHONPATH="インポート対象のファイルが格納されている場所のパス:$PYTHONPATH"
【コマンド例】
export PYTHONPATH="/Users/username/mylib:$PYTHONPATH"
環境変数を設定した後、別ファイルに定義された関数を呼び出すには、import文を記載します。ディレクトリ構造の違う場所にあるファイルの関数を呼び出す方法も含めて紹介します。
【同じディレクトリにあるsample.pyに定義されている関数の呼び出し方】
import sample
変数名 = sample.関数名(引数1, 引数2, …)
【mylibディレクトリにあるsample.pyに定義されている関数の呼び出し方】
from mylib import sample
変数名 = sample.関数名(引数1, 引数2, …)
以下のようにimport文を定義すると、関数名の前に記載するファイル名を省略できます。
【同じディレクトリにあるsample.pyに定義されている関数の呼び出し方】
from sample import 関数名
変数名 = 関数名(引数1, 引数2, …)
【mylibディレクトリにあるsample.pyに定義されている関数の呼び出し方】
from mylib.sample import 関数名
変数名 = 関数名(引数1, 引数2, …)
Pythonの組み込み関数一覧
Pythonには、標準で利用できる組み込み関数が提供されており、文字列操作など基本的な機能があります。組み込み関数のうち、主なものは以下の通りです。
関数 | 説明 | 呼び出し例 |
---|---|---|
引数を画面などに出力する | print('Hello') | |
len | 引数の文字列またはリストの要素数を返す | ret = len('string') |
max | 引数の中から最大値を返す | ret = max(1, 2, 3, 4) |
他にも、さまざまな組み込み関数が用意されています。以下は、組み込み関数の一覧です。
基本的には、組み込み関数を活用して、独自の関数が必要となる場合にユーザー定義関数を作成しましょう。
Python関数の作り方
ここからは、Pythonのユーザー定義関数の作り方について解説します。Pythonの関数は、pyファイルに記載します。関数の定義と引数・戻り値の書き方など基本的な作り方をマスターしましょう。
関数の定義
ユーザー定義関数を使えるようにするには、関数の定義が必要です。関数の定義には、def文を使用します。Def文は、以下の通りです。
def 関数名(パラメーター1, パラメーター2, ……):(関数の定義)
関数で行う処理(関数で処理する内容)
関数の定義をdef文で行った次の行で、空白4つを入れて、関数の処理内容を記載します。処理内容は複数にわたって記載しても問題ありません。
具体的なコードは、以下の通りです。
def sample():
print("Hello")
print("World")
引数の定義
ユーザー定義関数に引数を定義する場合は、def文の定義で引数を定義するだけです。
def sample(引数1,引数2,…):
print("Hello")
戻り値の定義
ユーザー定義関数に引数を定義する場合は、def文の定義で引数を定義するだけです。
def sample(引数1,引数2,…):
return 戻り値
戻り値は、複数渡すこともできます。
def sample(引数1,引数2,…):
return 戻り値1,戻り値2
val1,val2 = sample(引数1,引数2,…)
戻り値を複数返す関数を呼び出す側も、戻り値用の変数を2つ記載します。
関数を引数として渡す場合
Pythonは、関数をオブジェクトとして扱えるため、関数の引数に渡したり、戻り値にしたりする処理も可能です。
def 関数A
処理
def 関数B(関数A)
関数A
# 実行
関数B(関数A)
グローバル変数とローカル変数
グローバル変数とローカル変数は、関数とともに知っておきたい変数の種類です。ローカル変数とは、関数内で定義されている変数のことです。
def sample(arg):
# ローカル変数はlocal_vaule,arg1, arg2
local_vaule = sample(arg1, arg2)
グローバル変数は、関数の外側で定義されている変数すべてです。
# global_value はグローバル変数
global_value = 20
def test_global(arg):
# ローカル変数 arg と グローバル変数 global_value の積
return arg * global_value
関数内だけで使いたい関数は、ローカル変数として定義します。ファイル外からでも利用したい場合は、グローバル変数として定義しましょう。
関数の命名
Pythonで関数名を定義する場合、「その関数が何をするものか」について分かりやすく説明する必要があります。また、関数を命名する際は、英文字・アンダースコア・数字で構成しなくてはなりません。
一般的に見られるPythonの関数名は、英小文字のみで構成し、アンダーバーで適切に区切って機能を分かりやすく表現します。Pythonの命名規則が定められているドキュメントは、「PEP 8 -- Style Guide for Python Code」です。
英語ですが、どのような定義が記載されているかは、一通り確認しましょう。
Pythonの関数を使いこなそう
Pythonの関数は、他のプログラミング言語と比較してもあまり大きな差がないため、順調に使いこなせるようになります。ただし、importできるファイルは同階層のみなので、別途環境変数でimportしたいパッケージの指定を行うことが必要です。Python関数の使い方をマスターして、自身のスキルアップを目指しましょう。
もし、「独学でPythonをマスターするのは難しい」と感じる場合は、AKKODiS(派遣・紹介予定派遣)が提供する研修プログラム、AKKODiS Academyで用意されているPython言語の講座に申し込んでみてはいかがでしょうか。Pythonだけでなく、Webプログラミングに便利なJavaやC#なども学べます。
自分にとって学びやすい方法で、プログラミング言語をマスターしましょう。
(2021年7月現在)