【Python】関数・引数・戻り値の使い方(def・return文)

Pythonにおける関数・引数の使い方(def)について入門者向けにまとめました。

関数・引数とは

動画解説版

本ページの内容は以下動画で解説しています。

関数とは、「処理のまとまり」のことです。
プログラムの規模が大きくなるほど、関数で処理を分けて記述した方が、効率的で分かりやすいコードを書くことができます。
中学数学や高校数学でも「1次関数」「2次関数」が出てきましたが、プログラムでも考え方はほとんど同じです。

例えば、次のような1次関数について考えます。

(1)   \begin{eqnarray*} f(x)=2x+1 \end{eqnarray*}

このとき、f(x)を関数、xを変数といいます。
この関数は、「変数xを2倍して1を加える処理をまとめたもの」と言えます。
一度そのような関数を定義しておけば

(2)   \begin{eqnarray*} f(0)=1\\ f(1)=3\\ f(2)=5 \end{eqnarray*}

という風に処理を簡潔に記述できます。
プログラムの世界では、変数xのことを「引数」といいます。

関数定義、呼び出し、返り値(def文、return文)

Pythonでは、関数定義に「def 関数名:」を使います。
C言語のように関数に型を定義する必要はありません。

# -*- coding: utf-8
# 関数定義
def func():
  return 0

# 関数の呼び出し
x = func()

# 返り値を出力
print(x) # 0

■return文について
4行目にある「return」は関数を呼び出した時にreturnの右に記述した値を返します。
この返す値のことを「返り値」や「戻り値」といいます。
このサンプルコードでは、「return 0」となっているので、func関数を呼び出すたびに常に0を返します。
そのため、変数xには0が代入されます。

引数の定義

引数とは、「関数に代入する値」のことです。
関数で処理させるのに必要なデータを渡す役割を持ちます。
関数同様、引数も型を定義する必要はありません。

書式

def 関数名(引数名1, 引数名2, ...):
# -*- coding: utf-8
# 関数定義
def func(a, b):
  c = a + b
  c = c * 2
  return c

# 関数呼び出し(1回目)
x = func(1, 2)

print(x)  # 6

# 関数呼び出し(2回目)
x = func(4, 5)

print(x)  # 18

上記のプログラムの場合、「関数の返り値は2つの引数を加算した値×2」となっています。
このように関数を定義しておけば、同じ計算式を2回も書く必要がなく、効率的で分かりやすい記述ができます。
計算式や処理が複雑になるほど、関数が便利になっていきます。

【Python】関数と引数の定義
この記事では、Pythonで関数と引数を定義する方法について入門者向けにソースコード付きでまとめました。

【注意】引数に渡した変数は値かリストによって処理が異なる

Pythonでは、関数の引数に渡した変数は、「値」か「リスト」によって次のように処理が異なります。

項目 概要
関数に渡した値が変化しても、呼び出し元の変数には影響ありません。
リスト 関数に渡したリストの要素が変化すると、呼び出し元のリストにも影響がでます。

そのため、リストを引数にして渡した場合、要素を変更したリストをreturn文で返す必要はありません。

ソースコード

サンプルプログラムのソースコードです。

# -*- coding: utf-8 -*-

# 関数の定義
def fanc(var, array):
    var = 10
    array[0] = 10


var = 0
array = [0, 1, 2]

# 関数呼び出し
fanc(var, array)

print(var)   # 0
print(array) # [10, 1, 2]

変数varの呼び出し元の値は変化なしですが、リストlistの要素は呼び出し元も変化しています。

【Python】関数に渡した値・配列の違い
この記事では、Pythonにおいて関数に渡した値・配列の違いをソースコード付きで解説します。

関連記事

【Python超入門】使い方とサンプル集
Pythonの使い方について、基礎文法から応用例まで入門者向けに解説します。

コメント