Python 関数完全マスター: 構文・種類・実践例
Python 関数
この記事では、関数とは何か、構文、構成要素、関数の種類について学びます。また、Pythonで関数を作成する方法も習得します。
動画: Python関数入門
Pythonにおける関数とは?
Pythonにおいて、関数は特定のタスクを実行する関連文のグループです。
関数はプログラムをより小さくモジュール化されたチャンクに分割するのに役立ちます。プログラムが大きくなるほど、関数によって整理しやすく管理しやすくなります。
さらに、繰り返しを避け、コードを再利用可能にします。
関数の構文
def function_name(parameters):
"""docstring"""
statement(s)
上記は関数定義で、以下の構成要素からなります。
- 関数ヘッダー開始を示すキーワード
def。 - 関数を一意に識別する関数名。Pythonの識別子命名ルールに従う。
- 関数に値を渡すためのパラメータ(引数)。省略可能。
- 関数ヘッダー終了を示すコロン(
:)。 - 関数の役割を説明するオプションのドキュメント文字列(docstring)。
- 関数本体を構成する1つ以上の有効なPython文。同じインデントレベル(通常スペース4つ)必要。
- 関数から値を返すオプションの
return文。
関数の例
def greet(name):
""" This function greets to the person passed in as a parameter """
print("Hello, " + name + ". Good morning!")
Pythonで関数を呼び出すには?
関数を定義したら、別の関数、プログラム、あるいはPythonプロンプトから呼び出せます。関数を呼び出すには、適切なパラメータで関数名を入力するだけです。
>>> greet('Paul')
Hello, Paul. Good morning!
関数定義を含むPythonプログラムで上記コードを実行して出力を確認してください。
def greet(name):
""" This function greets to the person passed in as a parameter """
print("Hello, " + name + ". Good morning!")
greet('Paul')
注意: Pythonでは、関数定義は関数呼び出しより前に存在する必要があります。そうでない場合エラーになります。例:
# 関数呼び出し
greet('Paul')
# 関数定義
def greet(name):
""" This function greets to the person passed in as a parameter """
print("Hello, " + name + ". Good morning!")
# Error: name 'greet' is not defined
ドキュメント文字列
関数ヘッダーの直後の文字列はドキュメント文字列(docstring)と呼ばれ、ドキュメンテーション文字列の略です。関数の役割を簡潔に説明するために使われます。
省略可能ですが、ドキュメント化は良いプログラミング習慣です。先週の夕食を覚えていられないなら、常にコードを文書化しましょう。
上記例では関数ヘッダー直下にdocstringがあります。複数行にわたる場合に備え、一般にトリプルクォートを使用。この文字列は関数の__doc__属性として利用可能です。
例:
以下をPythonシェルで実行して出力を確認:
>>> print(greet.__doc__)
This function greets to the person passed in as a parameter
docstringについて詳しくはPython Docstringsを参照。)
return文
return文は関数を終了し、呼び出し元に戻るために使用します。
returnの構文
return [expression_list]
この文は評価される式を含められ、その値が返されます。式がない場合や関数内にreturn文自体がない場合、関数はNoneオブジェクトを返します。
例:
>>> print(greet("May"))
Hello, May. Good morning!
None
ここではgreet()が直接名前を出力しreturn文を使わないため、Noneが返されます。
returnの例
def absolute_value(num):
"""This function returns the absolute value of the entered number"""
if num >= 0:
return num
else:
return -num
print(absolute_value(2))
print(absolute_value(-4))
出力
2 4
Pythonでの関数の仕組み

変数のスコープとライフタイム
変数のスコープは、プログラム内で変数が認識される部分です。関数内で定義されたパラメータと変数は外部から見えません。したがってローカルスコープを持ちます。
変数のライフタイムは、変数がメモリに存在し続ける期間。関数内変数のライフタイムは関数実行中のみ。
関数から戻ると破棄されます。したがって、関数は前回の呼び出しからの変数値を記憶しません。
関数内変数のスコープを示す例:
def my_func():
x = 10
print("Value inside function:",x)
x = 20
my_func()
print("Value outside function:",x)
出力
Value inside function: 10 Value outside function: 20
ここではxの初期値は20。関数my_func()内でxを10に変更しても、外部の値には影響しません。
これは関数内のx(関数ローカル)と外部のxが別物だから。同じ名前でも異なるスコープを持つ別変数です。
一方、関数外の変数は内部から見えます。グローバルスコープを持ちます。
これらの値は内部から読み取り可能ですが、変更(書き込み)はできません。関数外の変数値を変更するには、globalキーワードでグローバル変数として宣言する必要があります。
関数の種類
基本的に関数は以下の2種類に分類できます:
- 組み込み関数 - Pythonに組み込まれた関数。
- ユーザー定義関数 - ユーザー自身が定義した関数。
Python
- Stratasys FDM造形を最適化するInsight必須機能10選
- Python 演算子完全マスター: 包括的ガイド
- Python 関数引数完全マスター: 位置引数・キーワード引数・デフォルト引数
- Python ラムダ関数: 無名関数の実践ガイド
- Python辞書完全ガイド:作成、操作、高度なテクニック
- Pythonジェネレータ:効率的イテレーションと高度なユースケース
- Pythonクロージャ解説:ネスト関数が変数を捕捉する仕組み
- Pythonデコレータマスター:エキスパート技法で関数を拡張
- Python strip()メソッド完全ガイド:実践例付き
- Pythonラムダ関数をマスターする:実例とベストプラクティス
- Python round()関数を実例で徹底解説