【Python入門】関数とメソッドの違いは?初心者向けにわかりやすく解説
Pythonを使っていると、よく「関数」や「メソッド」といった言葉を聞く場面が出てきます。
どちらも『渡された値に対して特定の処理を行い、その結果を返す仕組み』なのですが、違いがわからず困惑する方も多いのではないでしょうか。
この記事では関数とメソッドの違いについて、プログラミング初心者の方向けにわかりやすく解説していきます。
関数とメソッドの違い
じつはメソッドも、元をたどれば「関数」の一種となっています。
関数とメソッドの違いは、「使用できる値(データ型)に制限があるかどうか」です。
【結論】使用制限があるかどうか
- メソッド
-
処理対象となる値(データ型)に制約がある
- 関数
-
処理対象となる値(データ型)に制約がない
この「使用制限の有無」に関して、具体的な事例を交えて説明していきます。
例えば、メソッドの一つにappend()
というものがあります。
こちらは「リストの一番最後(末尾)に要素を追加する」ことができるメソッドであり、「リスト.append(要素)」の形で使用します。
役割からも見てわかる通り、append()
の場合は「リストに対してのみ使える」といった制約を持っています。
ls = ["テスト", 123, False] # lsという変数に、リストを保持
ls.append("test") # ls(リスト)に「test」を追加
print(ls) # lsの中身を表示
= 実行結果 =
['テスト', 123, False, 'test']
一方、関数の中でも最も目にする機会が多いのがprint()
ではないでしょうか。
print()
は指定された値を出力(表示)する役割を持った関数で、「print(値)」の形で記述して使用します。
こちらは先程のappend()
メソッドとは違って、表示できる値に特に制限はありません。
print("Hello, World!") # 文字列(Hello, World!)を出力する
print(["テスト", 123, False]) # リストを出力する
= 実行結果 =
Hello, World!
['テスト', 123, False]
このように、「使用場面が限られているのがメソッド」「そうでないものが関数」として切り分けることができます。
なぜメソッドは自由に使えないの?
メソッドにのみ制約がかけられている理由は、関数の定義(作成)方法の違いにあります。
例えば “テスト” ならstr型、[1, 2, 3] であればlist型というように、Pythonで値を扱う際は必ず対となるデータ型が存在します。
データ型は、単純に「”で囲まれた値だからstr型」と分類されるわけではなく、「どの関数が使えるか」といったルールもあわせて定められています。
つまり、メソッドは各データ型に属する形で定義されている関数であるため、使用できる値に制限があるのです。
まとめ
この記事では、プログラミング初心者の方向けに、関数とメソッドの違いについて解説しました。
一見すると混乱してしまいそうですが、元を辿ればどちらも「関数」の一部になります。
Pythonを理解する上で、双方の違いを理解することは重要な要素となりますので、ぜひ参考にしてみてください。