Python
 Computer >> コンピューター >  >> プログラミング >> Python

【初心者向け】Pythonの関数とメソッドの違いを徹底解説!基本構文と実例つき

関数(Function)とは

関数とは、特定のタスクを実行するためにまとめられたコードブロックです。独自のスコープを持ち、名前を指定して呼び出します。引数は0個でも複数個でもよく、処理の終了時に値を返すことも、返さないことも可能です。

関数の基本構文

def 関数名(引数1, 引数2, ...):
    # 関数本体

それでは、ごくシンプルな「sum」という関数を作成してみましょう(関数名は自由に付けてかまいません)。この関数は num1 と num2 という2つの引数を受け取り、その合計を返します。sum(5, 6) のように呼び出すと、11 が返されます。

def sum(num1, num2):
    return (num1 + num2)

実行結果

>>> sum(5,6)
11

このように、return 文を使うことで、Pythonの関数から値を返すことができます。

関数を活用することで、コードの再利用性が大幅に向上します。Pythonの関数には主に以下の3種類があります。

  • 組み込み関数:Pythonに最初から用意されている関数です。ヘルプを表示する help()、最大値を取得する max()、オブジェクトの型を返す type() など、多数存在します。

  • ユーザー定義関数:ユーザー自身が作成する関数です。上記で作成した「sum」関数がこれに該当します。

  • 匿名関数:通常の関数が def キーワードで定義されるのに対し、lambda キーワードで定義される無名の関数です。「ラムダ関数」とも呼ばれます。

メソッド(Method)とは

Pythonにおけるメソッドは関数とよく似ていますが、オブジェクトやクラスに紐づいている点が大きく異なります。メソッドと関数の違いは、主に次の2点です。

  • メソッドは、呼び出し対象となるオブジェクトに対して暗黙的に適用されます。

  • メソッドは、そのクラス内に保持されているデータへアクセスできます。

メソッドの一般的な構文

class クラス名:
    def メソッド名(self):
        # メソッド本体

簡単なコード例で、メソッドの動きを確認してみましょう。

class Pet(object):
    def my_method(self):
        print("I am a Cat")

cat = Pet()
cat.my_method()

実行結果

I am a Cat

このコードでは、まず「Pet」クラスを定義しています。次に、この設計図をもとにオブジェクト「cat」を生成し、最後にそのオブジェクトから独自のメソッド my_method() を呼び出しています。

Pythonにおけるメソッドと関数の主な違い

関数とメソッドそれぞれの基本を理解したところで、両者の重要な違いを整理しましょう。

  • 関数とは異なり、メソッドは必ずオブジェクトに対して呼び出されます。先ほどの例では、オブジェクト「cat」に対して my_method() を呼び出しましたが、関数「sum」はオブジェクトなしで単独で呼び出せます。また、メソッドはオブジェクト経由で呼び出されるため、そのオブジェクト内部のデータにもアクセスできます。

  • メソッドはオブジェクトの状態(state)を変更できるのに対し、関数は通常、オブジェクトの状態を変更せず、受け取ったデータに対して操作を行うだけです。

まとめると、メソッドとは「オブジェクトに属する関数」だと言えます。

  1. 【初心者向け】Pythonのgetattr()関数とsetattr()関数の違いをわかりやすく解説

    getattr()関数とはgetattr()関数は、Pythonの組み込み関数の一つで、オブジェクトが持つ「指定した名前の属性」の値を取得するために使われます。もし属性が見つからない場合は、あらかじめ指定しておいたデフォルト値を返すことができるのが特徴です。基本構文getattr(object, name[, default])パラメータobject:属性を取得したい対象のオブジェクトname:取得したい属性の名前(文字列で指定)default(省略可能):属性が存在しなかった場合に返す代替の値戻り値指定した名前の属性が存在する場合 → その属性の値属性が存在せず、defaultが指定されてい

  2. JavaScriptとPythonのセミコロンの違いは何ですか?

    JavaScriptとPythonにおけるセミコロンの扱いの違いPythonでは、セミコロン(;)は基本的に不要です。文末に付けてもエラーにはなりませんが、通常のコーディングスタイルでは書きません。一方、JavaScriptでもセミコロンは省略可能ですが、明示的に記述するのが良いプラクティスとされており、一部のステートメントでは必須となるケースもあります。セミコロンを書かなかった場合、JavaScriptエンジンによって自動的に挿入されますが、この自動挿入によってコードの意図が変わってしまうことがあります。これを「自動セミコロン挿入(Automatic Semicolon Insertion: