- 更新日: 2018年05月29日
- 公開日: 2018年05月26日
【Python入門】関数の概要からサンプルまで
Python入門者の中で、コードを書き写している内は問題ないのですが、自分なりにコードをアレンジしたり、オリジナルコードを書き始めた途端に関数の取り扱いで ??? となったりしせんか?
Pythonの関数は、関数単独で利用する場合、ライブラリとして利用する場合、パケージとして利用する場合、それに加えて関数のオプション機能(引数など)も絡んできて、関数の全体像を把握するのは一苦労です。
今回はそんな 関数ストレス から開放されるべく、関数をやさしくオブラートに紐解いて解説。
参考書を読んでもいまいち関数を理解、イメージできない方、ぜひ一読して、実際にサンプルコードを試して 関数 に挑戦してみて下さい。
【Python入門】関数の概要からサンプルまで
関数とは
Pythonをはじめプログラミングにおける『関数(functions)』は、入力値に対してなんだかの仕事(計算やプログラム処理)をしてくれる機能のことです。Pythonについては、open() や print() など括弧が付いているコードが関数になります。
Pythonには、豊富な種類の関数が用意され、プログラミング初心者やデータ処理初心者、人工知能初学者でも本格的な計算を簡単に利用することが可能。 またこの先登場してくるであろう、Pythonの「オブジェクト指向」や「モジュール」を学習する上でも『関数』の理解は欠かせません。
関数については、事前にPythonで用意されている「組み込み関数」や「標準ライブラリ」、それから外部で管理されているパッケージ&ライブラリが無数に存在。そして自分でも好みの処理を関数として作成することも可能です(ライブラリやパッケージも)。 とっかかりこそ難しいものの、関数が理解できると確実に自分の可能性は広がります。 関数をはじめて学習する方は、説明を読んでも、コードを見ても書いてもよくわからない時もあると思いますが、諦めずに少しずつじっくりと時間をかけて、紐解いてみて下さい。きっと『関数』解ると思いますよ。
公式の組み込み関数サイト/ https://docs.python.org/3.2/library/functions.html
公式のライブラリ紹介サイト/ https://docs.python.org/3/library/
パッケージ紹介サイト/ https://pypi.org/
【関数とライブラリとパッケージ】
Python学習初期の混乱要因のひとつに「ライブラリ?」「関数?」「パッケージ?」があります。どれも同じような機能的な使い方をするのに呼び方が違う。広義では、ライブラリもパッケージも関数の一種で、ライブラリでは複数の機能(関数)を一つのPythonファイルに納め、パッケージは複数のPythonファイルで機能(関数)を制御。学習初期は、どれも「機能的な働きをする関数」というイメージ程度でいいと思いますね。モジュールやオブジェクト指向あたりに学習が進んだ時に改めて「ライブラリ」や「パッケージ」の中身を見なおしてみるといいと思います。
関数のインパクト
何を学習するにも「効果」「メリット」「ベネフィット」が分からなければやる気が起きないと思います。 学習前に関数のすごさ、スケーラビリティを感じて下さい。以下のサンプルは、関数の基礎学習を終えた後に、自作した多言語対応電卓です。
【3ヶ国語対応の電卓】
Pythonの演算子機能を関数化して、多言語対応に応用したプログラムになります。右下の ▶ を押してプログラムを体験して下さい。
仮に演算子機能を関数化できなかった場合は、繰り返して計算機能を利用することは難しいですし、他言語化や他の機能をプラスしようと思うとコードが長くなりバグ修正の難易度を上げてしまいます。特定範囲のプログラムを関数化することで、アプリの構成を容易化し、管理・拡張を簡素化してくれますね。
組み込み関数の使い方
それではまずPythonの関数に慣れていくために、Pythonに標準装備されている「組み込み関数」を使ってみましょう。
【サンプルコード】
print("Hello Function")
abs(-99)
Pythonをちょっと学習したことのある方なら、「ん?これも関数?」と思うかもしれません。 print() をはじめ abs() や int() 、 sum() なども関数になります。こちらは組み込み関数といってPython標準装備の関数になり、上記のようなコードで利用可能。
尚、利用できる組み込み関数の種類は、68種類*となっています。
標準ライブラリの使い方
標準ライブラリは、Pythonに標準装備されているライブラリ集で250種類以上存在。ライブラリは組み込み関数に比べると高機能なものが多く、Webアプリの作成や人工知能系などPythonプログラミングでは欠かせないツールです。こちらではライブラリの使い方い合わせて、関数で用いる用語説明も行いますね。
【標準ライブラリの一例】
- calendar/カレンダー機能
- math/数学関数
- random/数値のランダム化
- csv/CSVファイルの取り扱い
- email/メール処理 など
Python標準ライブラリ https://docs.python.jp/3/library/
【サンプルコード】
import random
num = random.randint(1,100)
print(num)
【コードの要約】
コード | 解説 |
---|---|
import random | randomライブラリを読み込み |
num = random.randint(1,100) | 1〜100までの整数値一つを num に代入 |
print(num) | 先ほど代入されたnumを出力 |
組み込み関数と違い、ライブラリは import ●● とプログラム冒頭で宣言する必要があります。 今回は数値をランダム化したいので import random と入力。
そして2行目では、 random.randint というコード。これは random.py プログラムの中にある randint という機能(関数)を使うよ、という宣言文になります。 randint は、整数値のランダム処理で使われ、他には、 choice や shuffle など23種類ほど存在。詳細は、 random.py をご確認いただくといいでしょう。
次に random.randint の後に (1,100) という数値が存在。おおよそ想像はつくと思いますが、「1から100までの範囲」という意味になります。このような関数後に付く () 内の数値を「引数」といいます。
最終行の print(num) では、1から100までのランダム処理された数値が一つ出力。 このような関数処理された値を「戻り値」といいますね。
他にも python-docx などのパッケージ使用方法もおもしろいのですが、文量的に割愛させて頂きます。 あと関数について知っておきたいポイントとして「関数の作成」がありますね。
オリジナルの関数を作成
これまでは「組み込み関数」や「標準ライブラリ」といった出来上がった、既成品の関数をご紹介してきました。 実際にコードを実行してみた方は、「すごいな」「おもしろいな」と思われたことでしょう。 そんな「すごいな」「おもしろいな」というPythonの関数は、自分で作ることも可能です。 「関数を作る」というとチョット大げさかもしれませんが、要は「Pythonコードを書く」という作業ですね。
まず最初に簡単な関数をご紹介。
■ ファイル名:mytool.py ■
def tool1():
print("最初の関数!!")
defで関数宣言を行い、今回は tool1() という名称の関数にしました。tool1() 、最初は違和感があるかもしれませんが、print() や open() などの仲間と思って下さい。
それではこの関数を実行してみましょう。
何も表示されません、なぜでしょう。
簡単な表示方法からご紹介していきましょう。
mytool.py を下記のように書き換えてみて下さい。
def tool1():
print("最初の関数!!")
tool1()
すると関数の目的であるプリント文が出力されました。3行目で関数 tool1() を読み込むことで、関数 tool1() 内のプリント文が読み込まれたんですね。
違う方法も見てみましょう。先ほどの関数ファイル mytool.py とは別に maintool.py というファイルを作成します。
■ ファイル名:maintool.py ■
from mytool import tool1
tool1()
■ ファイル名:mytool.py ■
def tool1():
print("最初の関数!!")
maintool.py では、関数ファイル mytool.py を読み込み、関数 tool1() を使うと宣言。 これによって 関数ファイル mytool.py の出力が実行されます。 maintool.py のように from ●● import ●● として関数を使う方法は、よく「モジュールを使う」と表現されますね。 コードを実行してみると分かるのですが、モジュールで関数を制御する方が拡張的で、機能(関数)の追加・メンテナンスも行いやすいでしょう。
開発環境毎の関数の使い方
先ほど作成した関数 mytool.py ですが、pythonシェルスクリプトで実行する場合、jupyterで実行する場合、テキストエディタベースで実行するのでは実行方法が異なります。 それぞれの環境下で上記の関数 mytool.py を実行してみたいと思います。
■ Pythonシェルスクリプト ■
Pythonシェルスクリプトの場合は、関数宣言後、関数を実行するだけで出力を得ることができます。また関数ファイルがあるディレクトリで Pythonシェルスクリプトを起動すると、関数宣言なしの from 関数ファイル名 import 関数名
で関数の読み込みが可能。シェルスクリプトの作業が長くなってどの関数が使えるか確認したいときは、 locals()
で今のスクリプト内で使える関数を確認できます。
■ jupyter ■
jupyterは、基本的にPythonシェルスクリプトと同じ使い方です。
■ テキスト ■
テキストエディタで関数 mytool.py を作成した場合、目的の関数結果を得るには、①mytool.py 内で出力コードを書く、もしくは②モジュール機能を使って出力を得る(maintool.pyの作成)のどちらかになります。関数の目的に合わせてどちらかがいいか、いろいろ試してみましょう。上記画像は②のモジュール機能で実行している様子です。
\AIエンジニアに必要なスキルが身に付く/
まとめ
今回は関数についての大まかな機能、流れを説明させていただきました。Python教本をお持ちの方は、「本とはちょっと違う説明の流れだな。。。」と思われた方も。今回は関数について馴染んで頂く、モチベーションを上げて頂く目的で記事制作しています。そのため関数の細かい機能やルールは割愛しました、ご了承下さい。
Pythonの関数については、関数内関数、クロージャ機能、無名関数:ラムダ関数、ジェネレータ関数などありますし、引数でも位置引数、キーワード引数、引数値の設定、位置引数のタプル化、引数の辞書化などたくさんの説明要素が存在。Pythonの関数をもっと知りたいという方は、名著「入門 Python3(オライリー)」を参考にしてみて下さい。
また関数以前に「Pythonファイルの作成方法・実行方法がわからない」「時間がない」「わからないっ (>_<)」という方、オンラインのマンツーマンレッスン CodeCamp はいかがでしょう?CodeCampは安心の上場企業グループで、無料体験も行っていますので、きっとあなたの役に立ってくれると思いますよ。
- この記事を書いた人
- オシママサラ