Pythonの関数は、処理をまとめて再利用可能にする機能です。この記事では、関数を定義・使用する際に必要な情報を解説します。
関数の定義
関数定義には def キーワードを使用します。
def 関数名(引数1, 引数2, ...): # 処理 return 返り値 # 返り値は省略可能です
return 文で値を返します。return 文がない場合、関数は None を返します。
基本的な関数の例
まずは、引数も返り値もない、最もシンプルな関数です。
def say_hello(): print("Hello") say_hello() # "Hello" が出力されます
次に、引数を受け取る関数を定義します。下記のprint_message 関数は、引数 message で受け取った値を出力します。
def print_message(message): print(message) print_message("Hello, Python!") # "Hello, Python!" が出力されます
さらに、値を返す関数を定義します。下記のadd 関数は、2つの引数 x, y を受け取り、その和を return で返します。add(3, 5) のように呼び出し、結果を result 変数に格納しています。
def add(x, y): return x + y result = add(3, 5) print(result) # 8 が出力されます
デフォルト引数
引数にはデフォルト値を設定できます。
def greet(name="World"): return f"Hello, {name}!" print(greet()) # "Hello, World!" が出力されます print(greet("Alice")) # "Hello, Alice!" が出力されます
greet 関数は、name 引数にデフォルト値 "World" を設定しています。呼び出し時に name を指定しない場合は "World" が、指定した場合はその値が使用されます。
可変長引数
任意の数の引数を受け取るには、*args (位置引数) や **kwargs (キーワード引数) を使用します。
def print_args(*args, **kwargs): print("位置引数:", args) print("キーワード引数:", kwargs) print_args(1, 2, 3, a=4, b=5) # 出力: # 位置引数: (1, 2, 3) # キーワード引数: {'a': 4, 'b': 5}
print_args関数は*argsで複数の位置引数を受け取り、**kwargsで複数のキーワード引数を受け取ります。
関数の呼び出し
定義した関数は、関数名(引数) の形で呼び出します。
# 上記で定義した add 関数の場合 result = add(10, 20) # 30 が result に格納される
よくあるエラーと解決策
関数定義や呼び出し時に発生しやすいエラーとその解決策をまとめます。
| エラー | 原因 | 解決策 |
|---|---|---|
SyntaxError: invalid syntax |
文法的な誤り (コロンの欠落、括弧の不一致など) | エラーメッセージを確認し、構文を修正 |
TypeError: unsupported operand type(s) |
異なる型同士の演算 | 演算前に型を確認し、必要に応じて型変換 (int(), str() など) を行う |
NameError: name '...' is not defined |
未定義の変数や関数の使用 | 変数/関数が定義されているか、スコープが正しいかを確認 |
IndentationError: expected an indented block |
インデントの不足 | def, if, for などのブロック内で適切なインデント (通常はスペース4つ) を使用する |
AttributeError: ... object has no attribute ... |
オブジェクトに存在しないメソッドや属性へのアクセス | 使用しているオブジェクトの型と、利用可能なメソッド/属性を確認 |
ValueError: ... |
関数に渡された値が不適切 (例: int() に数値以外の文字列を渡した場合) |
関数に渡す値の型や範囲が適切か確認 |
エラー例: TypeError
result = add(5, "10") # TypeError が発生
数値と文字列の加算は行えないため、TypeError が発生します。
解決策
result = add(5, int("10")) # 文字列 "10" を整数に変換 print(result) # 15
int() を使用して、文字列 "10" を整数に変換することでエラーを解決します。
[PR] Pythonの基礎学習に利用できるUdemyのサイトを紹介します。