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


Pythonのプログラミングを学ぶ上で、print関数()、append()メソッドと言う用語が出てきます。
この2つの機能はプログラミングをすることにおいて何度も繰り返し使用することとなります。

同じような動作をする2つの機能ですが、それぞれ役割があり、違いがあります。
今回はこの2つの用語についての特徴と違いをまとめます。

print()関数

【Python】print()関数-プログラムの実行結果を表示する

2019年12月2日

メソッド()

【Python】リストの操作(メソッド)について

2019年12月7日

「Python」関数とメソッドの特徴と違いとは

Pythonにおける関数とメソッドの違いですが、主に以下となります。

  • 関数は引数を受け取り、処理結果を戻り値として返す
  • メソッドは値に対して処理を行う

それぞれの詳細は以下となります。

関数は引数と受け取り、処理結果と戻り値として返す

関数とはプログラムのの処理をひとまとめにしたものとなります。
以下のようなプログラムでは、int()関数に’100’と言う文字列を指定しており、関数を実行した結果として、整数方の100が得られるため、その値を変数に代入しています。

number = int('100')
  • 関数の円カッコ内に指定する値(‘100’) → 引数
  • 関数の実行結果の値(10) → 戻り値(または返り値)

関数を実行することを実行することを「呼び出す」、関数から結果をもらうことを「戻す」または「返す」と表現します。

int()関数は引数として、文字列(’100’)を受け取り、戻り値として、整数型(100)に変換した値を返します。
動作自体は変わりませんが、引数の値により、戻り値が変わるのが関数の便利なところです。

メソッドは値に対して処理を行う

メソッドは関数と似ています。
しかし、ある値に対して処理を行う機能となります。

メソッドの書き方は以下のようになります。

値.メソッド名()

以下のプログラムでは、「month_list」と言う変数に対し、append()メソッドを実行しています。
append()メソッドはリストのデータを追加する機能となります。

month_list = ['1月', '2月', '3月']
month_list.append('4月')
print(month_list)
['1月', '2月', '3月', '4月']

データの「型」によって使えるメソッドは異なる

上記のメソッドでは、値のデータ型によって使用できるメソッドが異なります。

month_list = ['1月', '2月', '3月']
month_list.append('4月')     ①
month_list.remove('2月')     ②
print(month_list)
['1月', '3月', '4月']
  1. リストに値を追加するメソッド
  2. リストないの値を削除するメソッド
test_str = 'あいうえおかきくけこ'
index = test_str.find('お')      ①
print(index)
4
  1. 指定した文字列の場所「4」を返す
test_str = 'あいうえおかきくけこ'
replaced = test_str.replace('あ', 'さ')     ①
print(replaced)
さいうえおかきくけこ
  1. 指定した文字列「あ」を「さ」に置換した文字列を返す

様々な引数の例

関数やメソッドの引数は一つとは限りません。
文字列の「replace()メソッド」は、ある文字列を他の文字列に置換するため、2つの引数を指定する必要があります。

また、複数の引数を指定する時は、カンマ(,)で区切り、指定します。
以下のように関数、メソッドによって引数の個数が0個のもの、1つのもの、2つのものなど様々です。
また、引数が正しく指定されていない場合はエラーが発生します。

text = 'Hello World'
text.lower()                 ①
'hello world'
text.find('Wo')               ②
6
text.replace('World', 'Python')      ③
'Hello Python'
text.replace('World')            ④
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: replace expected at least 2 arguments, got 1
  1. 全てを小文字に変換した文字列を返すメソッド
  2. 引数が1つのメソッド
  3. 引数が2つのメソッド
  4. 引数が足りない時はエラーが発生

引数の個数によって振る舞いを変える

関数やメソッドによっては、指定した引数の数によって動作が変わります。
下記のプログラムでは文字列を置換する、replace()メソッドを使用しています。

引数が2つの場合は、指定した文字列を全て置換しますが、引数に数値をつけることで、指定した数だけ置換します。

text = 'red, red, red'
text.replace('red', 'green')      ①
'green, green, green'
 text.replace('red', 'green', 1)    ②
'green, red, red'
text.replace('red', 'green', 2)     ③
'green, green, red'
  1. 全て置換
  2. 1つだけ置換
  3. 2つだけ置換

可変長引数は0個以上を指定できる

print()関数は0個以上の引数を受け取ることができます。
以下ではそれぞれ、0個から、非キスで指定dされたデータを表示しています。

このように0個以上の指定可能な引数を、可変長引数といいます。

print()
                   ①
print('今は5月です')
今は5月です              ②
print('今は', '5月', 'です')
今は 5月 です             ③
  1. 改行のみ表示
  2. ”内をそのまま表示
  3. ”内の文字列をスペース区切りで表示

キーワード引数

print()関数では複数の文字列を出力する際に、区切り文字を指定することが可能です。
指定しない場合はスペースで区切りますが、sep引数に文字列を指定することで任意の区切り文字を指定できます。

このような形式の引数を「キーワード引数」といいます。

print('今は', '5月', 'です')
今は 5月 です                  ①
print('今は', '5月', 'です', sep=',')
今は,5月,です                  ②
print('今は', '5月', 'です', sep='---')
今は---5月---です                ③
  1. スペース区切りで表示
  2. カンマ(,)区切りで表示
  3. ハイフン(—)区切りで表示

引数の指定方法には様々なパターンがあります。
関数とメソッドの違いは、プログラムを作成する上で、よく使うのでしっかりと頭に入れておくようにしましょう。


関連記事


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUTこの記事をかいた人

blank

インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!