pythonのことはじめ
このページはpythonとはなんぞやといった基礎的な情報を、Javaとの違いを交えてまとめます。
Contents
pythonとは
- pythonとはインタプリタ型のプログラム言語である。
- pythonのバージョンは現在は、2系と3系が主流でそこそそこの違いがある。
新しく作るものは、3系を採用するのが主流だと思われるが、用の中の多くのアプリケーションやツールなどではまだまだ2系であるものも少なくない。 - 科学計算や統計処理などのライブラリが豊富に提供されているため、昨今の人工知能とかのバズワードに乗って、シェアを拡大している。
pythonの特徴
- シンプルなコードで読みやすい
- 他の言語に比べて比較的に記述量が少なく済むことが多い。
- インデントでブロックを識別する(オフサイドルール)
- すべての変数はオブジェクトである。(Javaのようなプリミティブ型は無い)
- 動的型付けである。(変数に型宣言などはなく、最初に代入されて時に決まる(実行時))
- クラスを使ったオブジェクト指向型の実装もできるが、javaのように全部クラスで書かないといけないわけではなく、関数型プログラミング的な特徴も持っている。
また、1ファイル1クラスのような縛りもない。(コーディングルールで縛ることも私の経験上では少ない)
その他、いろいろあるが、弊社で主流のみんな知っているであろうjavaとの比較記事を参照。
javaとの比較
pythonの実行環境
pythonの実行環境は、公式サイトからそれぞれのOSにあったものをインストールすることで実行可能となる。
Unix/Linux系の各ディストリビューションについては、概ねデフォルトでインストールされている。
(大半はv2.7当たりが入っているが、最新のものだと3系がデフォルトになっているものとちらほら出てきた)
Anacondaのように中にpythonを含まれるプロダクトとかもある。
Anacodaについては以下を参照。
Anaconda を利用した Python のインストール
パッケージ(ライブラリ)の管理
javaのmaven/gradle、NodeJSのnpm/yarn、PHPのcomposerなどのようにパッケージ(ライブラリ)を管理するためのpipというものを利用する。
公式のpythonをインストールするとで一緒にインストールされるので、実質的にこれがスタンダート。
実行例)
* httpのクライアントライブラリをインストールする。
pip install requests
* インストールされているパッケージ一覧を表示
pip freeze
実行仮想環境について
1つの端末(OS)で複数のバージョンなどを実行する仮想環境を構築する仕組みがいくつかの方法で用意されている。
この仮想環境を利用する理由は、以下のようなもの。
- 複数のプロジェクトで異なるバージョンを利用していたりするケース
- 多くのLinuxのディストリビューションの各モジュールはpythonで実行されているものがあり、前述の通り、大抵はOS標準でインストールされているバージョンを前提とした実装となっているため、標準をアンインストールして異なるバージョンをインストールするとOSのモジュールが動かなくなってしまう可能性があるため
仮想環境の構築方法には、いくつかの仕組みが提供されいてるが、詳細は以下のリンク集を参照。
私的な見解では、pythonのオフィシャルがvenvを取り込んだこと、パッケージも含めた仮想環境を簡単に作れることから、Pipenv(venvとpipのセットで全体を管理)が主流になっていくのではないかと思われる。
※Pipenvはnodeのnpmのpackage.jsonに似た感じでPipfile/Pipfile.lockでプロジェクトで利用する仮想環境、パッケージ(ライブラリ)のバージョン全体を管理できる。
実際にpythonで実装したアプリケーションを実行する場合でもDockerようなコンテナでそのアプリケーションプロセス以外を動かさないなどのケースを除いては、この仮想環境でアプリケーションを実行することが多い。(私的見解)