繰り返し同じ処理を行う時は「関数」を定義する方がコードが綺麗になります。ここでは、Pythonの関数であるdef文について、引数や別ファイルからのインポート方法を説明します。
こんにちは。wat(@watlablog)です。
プログラムの基本は関数だと思ったので、本記事では色々覚える前にまずはPythonの「関数」の使い方を習得します!
関数について
関数とは?
関数とは中学校の数学で習った通り、\(y=f(x)\)のことです。
「関数」\(f\)内の「引数(ひきすう)」\(x\)に何か値を入れると、\(y\)として「戻り値」が返ってくるという意味を表しています。
関数\(f(x)=x\)だと単純に\(x\)と\(y\)は同じ値になってしまいますが、\(f(x)=2x^2+x\)のように関数の中の「処理」が変わると結果としての戻り値は変わってきます。
プログラムで使う関数の有用性
上式のように簡単な数式で表現できる処理であれば、わざわざ関数を使うメリットはあまりありませんが、処理の中身に「場合分け」が使われていたり、「ファイル操作」が使われていたり…処理が複雑になればなるほど関数は威力を発揮します。
Pythonのプログラムで100行かかる処理があったとします。
その処理が一回だけであれば問題ありませんが、プログラムの中でさらに100回色んな所で使われるとしたら、関数がなければそのコードをコピペして使う必要があります。
それでも使えますが、処理にバグがあり修正する必要がある場合には、コピペした場所全てを一つずつ直す必要がありますね。
100行の中の複数修正(手作業)を、100回繰り返しますか?
やってられるか!
そんな時に関数を使っておけば、関数内の処理を1回直すだけで全ての場所が同時に修正されたことと同じになります。
関数を使えばプログラムの修正がすごく楽になる!
使いこなせばいかにもプログラマみたいでかっこいいぞ!
早速使い方を学んでみよう!
Pythonの関数の使い方
def文の基本
Pythonでは関数をdef文で書きます(define由来かな?)
以下の構文で使います。
def文で名前を付けて関数を定義し、使う時はその名前を呼び出します。
1 2 3 4 5 6 7 |
#関数の定義方法 def 関数の名前(引数1, 引数2,…引数N): 処理の内容 return 戻り値 #関数を呼び出して使う方法 関数の名前(引数1, 引数2,…引数N) |
使い方の例
簡単な例を紹介します。
以下のプログラムを見て下さい。
「function1」はHello world!と表示するだけの関数で、引数や戻り値はありません。
「function2」は引数として\(a\)と\(b\)を関数に渡し、戻り値\(y\)を取得し、\(c\)に代入しています。
1 2 3 4 5 6 7 8 9 10 11 |
def function1(): print("Hello world!") def function2(a, b): y = a + b return y function1() c = function2(1,2) print(c) |
実行結果は以下になります。
1 2 |
Hello world! 3 |
関数をファイルからインポートする
import文とモジュールとは
関数の作り方を習得しましたが、より規模の大きなプログラムになってくると、関数をメインのプログラムに書いておくよりは別のファイルとして持っておいた方が管理がしやすくなります。
処理の種類毎にファイルを分けておけば、別のプログラムを書く時にそのファイルを再度使えば良くなります。
ここで、関数を別ファイルにしたものをモジュールと呼びます。
そのモジュールをインポートする際に使うのがimport文です。
import文を使うと、外部のファイルに関数集を作っておき(モジュール)、メインのファイルで関数が書いてあるファイルを読み込んで使うことができます。
関数を別ファイルから読んで使う方法
では早速使ってみましょう!
まず.pyファイルを2つ作ります。1つ目は関数を入れたファイル(ここではfunction.py)。
先ほどと同じ2つの関数が入っています。
1 2 3 4 5 6 |
def function1(): print("Hello world!") def function2(a, b): y = a + b return y |
2つ目はメインのファイル(ここではmain.py)。
ここでimport文が登場します。今回はmain.pyとfunction.pyは同じ階層にファイルがあります。そのため「import ファイル名」でファイルをインポートしています。
その後についている「as fc」は、functionという名前が長かったので、「functionはこの後fcとする!」と宣言していることになります。
インポートした関数は、「ファイル名.関数名」で使用します。
1 2 3 4 5 6 |
import function as fc fc.function1() c = fc.function2(1, 2) print(c) |
main.pyを実行すると、先ほどと同じ結果を得ます。
1 2 |
Hello world! 3 |
まとめ
Pythonに限らず、関数はプログラムの可読性や修正の容易さ、管理の効率を向上させるとても便利な機能です。
本記事ではPythonの関数であるdef文の基礎を習得し、さらに外部ファイルから読み込む方法を習得しました。
筆者である僕もPython初心者であり、ネットで調べながら・学びながら本記事を書いていますが、実はファイルの階層や、さらに便利なパッケージ化という手法があったり、様々な方法が存在します。
この記事では色々書くと伝えたいことがブレてしまうため、基本の使い方のみをまとめましたが、今後実際の処理をコーディングしていく際に必要であれば別記事にすると思います。
関数の使い方がわかったぞ!
これでまた一歩プログラマに近づいたね!
X(旧Twitter)でも関連情報をつぶやいているので、wat(@watlablog)のフォローお待ちしています!
コメント