4
3 Pythonの基礎

Pythonの基礎 - ric.co.jp · 3.1 Pythonってなに? 81 Python P P P 3 豊富なライブラリ たいていのプログラミング言語では、よく使われる処理は、すでにひとまとまりのプログラムとして用意

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

章第3Pythonの基礎

80

この章ではPythonの基礎について説明します。Rapsberry Piでは、さまざまなプログラム言語を使うことができますが、その中でも習得しやすく便利な言語としてPythonはオススメです。ここではPythonのプログラムをつくりながら、プログラミングの基本を身につけましょう。

3.1 Python ってなに?

Python(パイソン)は1990年にリリース(公開)されたプログラミング言語で、オランダのグイド・

ヴァンロッサムという人が開発しました。プログラミング言語としては、もっとも古いとされている

Fortran(フォートラン)のリリースが1954年、あるいは現在、幅広い分野で使われているC言語のリ

リースが1972年であることを考えると、比較的新しい言語といえます。

(1)Pythonの特徴Pythonは、気軽に学ぶことができる一方、商業システムを含むさまざまな分野に活用できるため、

近年人気が高まっています。Pythonには次のような特徴があります。

仮想マシンによる実行●●

たとえばC言語では、書いたプログラムを「コンパイル」という処理をして、コンピュータが実行で

きる「機械語」に変換してから、その「機械語」のファイルを実行するという手順をとります。一

方Pythonで書いたプログラムは、コンパイルを行うことなく、いきなりプログラムを実行できます。

Pythonでは、プログラムのファイルを通常「ファイル名 .py」という形式で保存しますが、実行

時にこのファイルがバイトコードというファイルに変換され、これがPythonの仮想マシン[1]「PVM

(Python Virtual Machine)」に引き継がれて実行されます。これらの処理は、Python内部で自

動的に行われるので、外部からは見えません。OSや環境ごとに、それぞれに適した仮想マシンが用

意されているおかげで、特定のプラットフォーム(Raspberry Pi、Windows、Macなど)で作成した

プログラムが、別のプラットフォームでも同じように動作するのです。

Pythonのバイトコードは、「Pythonのプログラム」とコンピュータが直接実行できる「機械語」の中

間となるコードで、機械語のようにコンピュータを動作させることができ、さらに比較的高速に実行で

きます。そのため、コンパイルの手間を省きつつ、一定の処理速度を確保しています。

[1] 仮想マシンとは、あるコンピュータ上で別のコンピュータのようにふるまうソフトウェアのことをいいます。プログラミングにおける仮想マシンは、プラットフォームごとの違いを吸収し、プログラムをそのプラットフォームで実行できるようにする働きをします。

3.1 Python ってなに?

81

Python

PPP

3

豊富なライブラリ●●

たいていのプログラミング言語では、よく使われる処理は、すでにひとまとまりのプログラムとして用意

されていて、自分がつくるプログラムで自由に使えるようになっています。この汎用的なプログラムの

ことを、ライブラリといいます。

Pythonにも豊富なライブラリが用意されており、これらは異なるプラットフォームでも同じように動作し

ます(ただし一部のライブラリは、特定のプラットフォーム上でしか動作しません。たとえば、第4章で

紹介するGPIOやカメラ制御のためのライブラリは、Raspberry Piの端子を使うので、Raspberry

Pi上でなければ動作しません)。プログラミングをするときは、これらのライブラリをいかに使いこなす

かが大事なポイントとなります。

図3.1.1に、Pythonのライブラリ群を示します。ライブラリの数は膨大ですが、本書で紹介するの

はほんの一部のみです。プログラミングをしていて「こんな処理が必要だけど、どう書けばいいかな」

と思ったら、まずはPythonのサイト(http://www.python.jp/)で、ライブラリ紹介のページにアク

セスしてください(図3.1.2)。

図3.1.1 Pythonのライブラリ

Python 標準ライブラリ

GUI インターフェイス(Tkinter)

I2C(smbus)

SPI(spidev)

GPIO 制御の拡張(RPIO)

GPIO の制御(第 4章で説明)※(RPi.GPIO)

カメラの制御(第 4章で説明)※(picamera)

時刻データへのサービスとアクセス(time)

コンテナデータ型(第 4章で説明)(collections)

組み込み関数

組み込み定数

組み込み例外

組み込み型

インストールが必要なライブラリ(第 4章で説明)

※Raspbian にインストールされているRaspberry Pi 特有のライブラリ

その他の膨大な数のライブラリ

テキスト処理サービス バイナリデータ処理 いろいろなデータ型数値と数学モジュール 関数型プログラミング用モジュールファイルとディレクトリへのアクセス データの永続化 データ圧縮とアーカイブ ファイルフォーマット 暗号関連 汎用オペレーティングサービス並行実行 プロセス間通信とネットワーク インターネット上のデータ操作構造化マークアップツール インターネットプロトコルとサポート マルチメディアサービス言語・地域対応 プログラムのフレームワーク 開発ツール デバッグとプロファイル Python ランタイムサービス カスタムPython インタプリタ モジュールのインポート Python 言語サービス

そのまま使える

インポートして使う

82

図3.1.2 Pythonのサイト(http://www.python.jp/)

日本語ドキュメントをクリック

ライブラリリファレンスをクリック

オブジェクト指向言語でありながら、手続き型でも書ける●●

オブジェクト指向とは、プログラムのつくり方の一種であり、まとまった機能のプログラムとデータをオ

ブジェクト(=モノ)という単位でくくり、複数のオブジェクト同士がメッセージを交わして連携すること

で、全体の機能を実現させるという考え方に基づいています。オブジェクト指向言語とは、このような

方法でプログラミングできるようにつくられたプログラム言語のことであり、通常はその言語に用意さ

れているライブラリも、オブジェクト指向に基づいて書かれています。

Pythonはオブジェクト指向言語なので、当然オブジェクト指向でプログラムを書くことも可能ですが、

どんなときでもオブジェクト指向を使うのがベストとは限りません。オブジェクト単位でプログラムを書く

「オブジェクト指向」に対し、処理の手順どおりにプログラムを書くスタイルを「手続き型」といいます

が、本書で紹介するプログラムは、ほとんどが小さなサンプルプログラムなので、この「手続き型」の

スタイルを採っています。このように、プログラムの規模や目的に合わせて、柔軟なスタイルを選択で

きる点もPythonの特徴といえます。