From the Southern Hemisphere

From the Southern Hemisphere

南半球に移住したプログラマの日々

【Python】関数とメソッドの違い

こんにちは、ピコピコくんです。
今回はPythonにおける関数とメソッドの違いについて調べました。

きっかけ

主にJavaやC#などを仕事で使っていますが、今まで関数メソッドという言葉の違いについて深く考えずに使っていました。せっかくPythonを勉強しているので、それぞれの特徴や違いについて調べて理解しようと思ったのがきっかけです。

関数

その関数自体を単体で呼び出すことができるものを関数と言います。例えばPythonの組み込み関数である画面に与えられたオブジェクトを表示する print()、引数に与えられた変数のデータ型を取得する type() 等は関数です。

※Pythonの組み込み関数については下記を参照してください。

docs.python.org

メソッド

メソッドとはデータ型に紐づいている関数のことを言います。

例えばリスト型に用意されているメソッド append()pop() はリスト型の変数や値に紐づいて使うメソッドです。

下記サンプルコードでは、リスト型の変数 my_list の後にドット( . )を付けてappend()、とpop()メソッドを呼び出しています。

my_list = [1, 2, 3]
my_list.append(4)
print(my_list)

# 出力結果
[1, 2, 3, 4]

my_list.pop(0)
print(my_list)

# 出力結果
[2, 3, 4]

モジュールの関数

突然ですが、ここで問題です。

下記サンプルコードの sys モジュールの version() は関数でしょうか、メソッドでしょうか? sys の後にドット( . )を付けて version 呼び出していますが...。

import sys
print(sys.version)

# 出力結果
3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 64 bit (AMD64)]

正解は「関数」でした。

モジュールの関数はモジュール名にドット( . )を付けて呼び出しますが、メソッドはデータ型を持つ変数や値にドット( . )を付けて呼び出します。

ややこしいですが、モジュールの関数とメソッドの違いはわかりましたか?

まとめ

関数とメソッドの違いを一言でまとめると「呼び出し方が違う」です。呼び出し方、つまり使い方が違うので名前が分けられているんですね。 

参考書籍

Pythonで学ぶアルゴリズムとデータ構造で勉強中です。

読者さん募集中

記事が気に入ったら読者登録をお願いします!