こんにちは、ライターのアキヒロです。
「標準ライブラリってよく聞くけど、何なんだろう」
「標準ライブラリには、どんな種類があるのかな」
そんなことを考えたことはありませんか?
この記事では、Pythonの標準ライブラリについて解説します。
【基礎】そもそも標準ライブラリとは何か?
【実践】便利な標準ライブラリの解説
といった基礎から実践的に役立つ内容までを解説します。
※ この記事のコードはPython 3.7, Ubuntu 18.04で動作確認しました。
本記事を読む前に、Pythonがどんなプログラミング言語なのかをおさらいしておきたい人は次の記事を参考にしてください。
→ Pythonとは?特徴やできること、活用例をわかりやすく簡単に解説
なお、その他のPythonの記事についてはこちらにまとめています。
標準ライブラリとは?
Pythonではprint()やlen()などのように、何もしなくても使える組み込み関数の他に、標準ライブラリと呼ばれるモジュール群も付属しています。
モジュールとは一連の関連した関数を埋め込んだPythonプログラムのことです。
つまり標準ライブラリを使うということは、既存のPythonプログラムに埋め込まれている便利な関数を使うということなんですね!
標準ライブラリの使い方
各モジュールの関数を呼び出すには、まずインポートを行う必要があります。
import モジュール名
複数のモジュールをインポートするときは、カンマで区切ってインポートもできますが、別々にインポートすることが推奨されています(PEP8というコーディング規約があります)。
import モジュール名1 import モジュール名2
fromを使えばモジュールの中にあるオブジェクトをインポートすることもできます。
from モジュール名 import オブジェクト名
便利な標準ライブラリ
では早速、使えると便利な標準ライブラリを紹介します!
randomモジュール
randomモジュールには乱数の生成に関する関数が含まれています。
import random print(random.randint(0, 10))
[実行結果]
2
1行目では先ほど紹介したモジュールのインポートを行っています。
2行目ではrandomモジュールのrandint関数を使って疑似乱数を生成しています。
この例では0<= N <=10で乱数を生成しています。
当然、実行するごとに結果が変わります。
また、randrange()を使えばstepも決めてランダムな整数を取得できます。
print(random.randrange(0, 10, 2))
[実行結果]
8
引数はrandrange(start, stop, step)となっています。
そのため、このコードでは0<= N <=9の数字の中から2のステップ、つまり0,2,4,6,8の偶数のみ表示するようになっているはずです。
mathモジュール
mathモジュールは数学に関する関数が含まれています。
from math import pi, e, sqrt, log, pow, sin, cos, tan print(pi) print(e) print(sqrt(4)) # 平方根 print(log(5)) # 自然対数 print(pow(2, 3)) # xのy乗 print(sin(0)) print(cos(0)) print(tan(0))
[実行結果]
3.141592653589793 2.718281828459045 2.0 1.6094379124341003 8.0 0.0 1.0 0.0
まず、一行目でmathモジュールにある各オブジェクトをインポートしています。
pi, eは定数です。piは円周率、eは自然対数の底を返します。
sqrt()は平方根、log()は自然対数を返します。
pow(x, y)はxのy乗を返します。この例では2の3乗、つまり2*2*2 = 8という結果が返されます。
さらにsin()、cos()、tan()もあります。これらは三角関数のサイン、コサイン、タンジェントを返します。
sysモジュール
sysモジュールにはシステムパラメータに関する関数が含まれています。
では、プログラムをsys.exit()を呼び出して終了させてみましょう!
import sys print('おはよう') print('こんにちは') sys.exit() print('こんばんは')
[実行結果]
おはよう こんにちは
このコードは「おはよう」、「こんにちは」、「こんばんは」を順番に表示するプログラムです。しかし「こんにちは」と「こんばんは」の間にsys.exit()を記述しました。
これによってプログラムが呼び出した場所で終了し、「こんばんは」が表示されていないことがわかります。
この関数を使うことで好きな時に早期にプログラムを終了させることができます。
osモジュール
osモジュールにはファイル操作に関する関数が含まれています。
import os print(os.getcwd()) os.mkdir('./test') os.chdir('./test') print(os.getcwd())
[実行結果]
/home/user/workspace /home/user/workspace/test
1行目は今までと同様にモジュールのインポートをしています。
os.getcwd()はカレントディレクトリを返します。
os.mkdir()はディレクトリを作ります。
os.chdir()はディレクトリを移動します。
このコードではディレクトリを作って、移動しています。そのためもう一度os.getcwd()を呼び出した時には新たに作ったディレクトリがカレントディレクトリになっていることがわかります。
reモジュール
reモジュールには正規表現の操作に関する関数が含まれています。
import re name = 'samurai' print(re.match('sam', name)) # 先頭がマッチするか print(re.match('sum', name)) print(re.search('rai', name)) # 'rai'という文字が含まれるか print(re.findall('a', name)) # マッチした部分をリストで返す print(re.sub('a', 'b', name)) # 'a'を'b'に置換する print(re.split('a', name)) # 'a'でnameを分割する
[実行結果]
<_sre.SRE_Match object; span=(0, 3), match='sam'> None <_sre.SRE_Match object; span=(4, 7), match='rai'> ['a', 'a'] sbmurbi ['s', 'mur', 'i']
順番に見ていきましょう。1行目はインポートをしています。
re.match()は文字列の先頭がパターンにマッチするかどうかが返されます。このコードではnameという変数に’samurai’という文字列を入れています。
そのため最初のmatch()では先頭がsamなのでmatchオブジェクトが返されています。
次のmatch()では先頭が’sum’かどうかを判定していますが、’samurai’の先頭は’sum’ではないのでNoneという結果が返されています。
re.search()は先頭に限らず、文字列の全てからパターンにマッチするか調べます。
re.findall()はマッチした部分をリストで返します。
この例では’a’にマッチした部分が2つあったことがわかりますね。
re.sub()は置換する関数です。’a’を’b’に置換したため、’samurai’が’sbmurbi’になっています。
re.split()は分割する関数です。’a’を区切りとして文字列を分割すると、’s’、’mur’、’i’になるため、正しい結果であることがわかります。
あなたが学ぶべき言語はPythonで本当に大丈夫?
ここまでPythonの標準ライブラリについて解説してきましたが、この記事をご覧の方の中には、
と不安になっている人もいるのではないでしょうか?そんな方には、一度立ち止まって考えて欲しいことがあります。それは、そもそもあなたがPythonを学ぶ目的は何か?本当に学ぶべき言語はPythonで間違いないか?ということです。
Pythonを学ぶ目的や理由は明確ですか?
Pythonに限った話ではありませんが、プログラミング学習はエラーとの戦いが大半なので、学ぶ目的や理由が不明確だとモチベーションが下がってしまい、挫折してしまいやすいです。
なのでもしあなたが今、
- なんとなくPythonが人気そうだから
- Pythonは将来性がありそうだから
といったような、ぼんやりした理由でPythonを学んでいるとしたらそれは要注意。もっと言うと、そもそもあなたが学ぶべき最適な言語が他にあるという可能性も考えられます。
どのプログラミング言語を学ぶか?は、その先のエンジニア人生を左右すると言っても過言ではありません。もしあなたが現状の言語選定に少しでも不安があるなら、まずはプログラミング学習プラン診断をご活用ください。
診断にかかる時間は1分ほど。4つの質問に答えるだけで、次のようなあなたにあうプログラミング言語やおすすめの学習プランを診断してもらえます。
学ぶプログラミング言語があいまいな方はぜひ一度お試しください。
あなたにあうプログラミング言語を診断してみる挫折なくPythonの習得を目指すなら
ここまでの解説を踏まえ、独学でPython言語を習得しようと考えている人のなかには、
独学で習得できるかな…
途中で挫折したらどうしよう…
と不安な人もいますよね。
実のところ、Pythonといったプログラミング言語の学習途中で挫折する独学者は多くいます。事実、弊社の調査では
- 不明点を聞ける環境になかった
- エラーが解決できなかった
- モチベーションが続かなかった
などの理由から、87.5%が「プログラミング学習で挫折や行き詰まりを感じた」と回答しています。
また、こうした背景もあってか、弊社がプログラミングに興味がある人100名へ実施した別の調査では
- 確実にスキルを身につけられると思ったから
- 独学では不安がある
- 効率よく学べそう
などの理由から、61%が「プログラミングの勉強を始めるならスクールを選ぶ」と回答しています。
加えて、プログラミングスクールの卒業生に「独学ではなくスクールを活用した理由」を聞いたところ「できるだけ短い期間でITエンジニアへの転職や副業に必要なスキルを身につけたかった」という回答も多く寄せられました。
上記から、1人でプログラミングスキルを習得できるか不安な人や短期間でスキルを習得したい人ほど確実性を求め、現役エンジニアといったプロの講師に質問できるプログラミングスクールを利用する傾向にあるのがわかります。
いざ独学でプログラミングを学び始めても、勉強の最中に挫折しまっては学習にかけた時間を悔やむだけでなく「プログラミングスキルを身につけるのって思っていたよりも難しいんだな…」とPythonの習得自体を諦めかねません。
仮にわからないことを飛ばしながら勉強を進めたとしても、ITエンジニアへの転職や副業での収入獲得を実現できる実践的なスキルが身につかなければ、結局後悔することになります。
そこで、おすすめしたいのが「SAMURAI ENGINEER(侍エンジニア)」です。
料金 | 月分割4.098円~ |
実績 | ・累計指導実績3万5,000名以上 ・受講生の学習完了率98% ・受講生の転職成功率99% |
侍エンジニアをおすすめする最大の理由は「挫折しづらい学習環境」にあります。
先ほど述べたとおり、独学者の多くは自力で不明点やエラーを解決できないためにプログラミング学習を挫折しています。そのため、未経験者が現役エンジニアのようなプロに質問や相談できない状況で、プログラミングスキルを習得するのは非常に難易度が高いといえます。
しかし、侍エンジニアでは
- 現役エンジニア講師によるマンツーマンレッスン
- 現役エンジニアに質問できるオンラインでのQ&Aサービス
- 不安や悩み・勉強の進み具合を相談できる学習コーチ
といったサポート体制を整えているため、学習中に出てきたわからないことや不明点をいつでも相談可能です。「受講生の学習完了率98%」「転職成功率99%」という実績からも、侍エンジニアなら挫折しづらい環境でプログラミング学習を進められるといえます。
また、侍エンジニアではカウンセリングにて受講生一人ひとりの目的をヒアリングしたうえでカリキュラムを作成するため、限られた受講期間でも効率的に必要なスキルだけを習得可能です。
最短距離で目的を実現できるようカリキュラムが組まれているため、勉強する順番や内容を誤り非効率に時間や手間を費やす心配もありません。
なぜ侍エンジニアが挫折せずPython言語を習得できるのか気になる人はぜひ公式サイトをご覧ください。
公式サイトで詳細を見るまとめ
今回はPythonの標準ライブラリの解説と、便利なモジュールを紹介しました。
標準ライブラリを上手に使えば、簡単に複雑な処理ができるようになります。
ぜひマスターして簡単に処理が書けるようになりましょう!
なお、今Pythonを学習している方は以下の記事もどうぞ。
はじめてPythonを使う方でもわかりやすいように、Pythonでできることやその学習法などを中心にまとめています。
復習にも使えると思いますので、ぜひ一度ご覧になってみてくださいね。
【Python 入門完全攻略ガイド】