【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を理解する上で、双方の違いを理解することは重要な要素となりますので、ぜひ参考にしてみてください。

シェアはこちらから
目次