Pythonについて

Pythonのことは検索すれば色々あるので気が済むまで調べていただきたいですが、私が感じてる特徴をザックリ書くとこんな感じ。

  1. いわゆるスクリプト言語
  2. 動的データ型
  3. ブロックをインデントで表現(カッコを使わない)ので見た目スッキリ
  4. なんか書き易い(見易い?3.のおかげか?)
  5. 標準ライブラリ&サードパーティーモジュール(パッケージ)が豊富

しっかりお勉強しなくても、ネットで検索すればある程度動くものは作れます。真面目に勉強しようかと思い、

Effective Python ―Pythonプログラムを改良する59項目

Effective Python ―Pythonプログラムを改良する59項目

 

これを読みかけてます。読むと、心なしか自分のコードがカッコ良くなった気がします。

個人的には、5.が一番気に入っていて、いわゆる車輪の再発名をしなくて良いです。「Pythonはデータ分析や、機械学習に向いている。」と言われていますが、多分5.のおかげが大きいのではないでしょうか。

Python(特に5.)の特徴を生かすために気を付けておいた方が良い点、その他の注意点を書きます。

 

英語

Pythonの情報は英語の記事の方が圧倒的に豊富です。日本ではRubyが人気でPythonを使う人が少なかったからだと思いますが、日本語の記事だけ見てPythonのことを調べても、結局英語の記事を読む羽目になります。

また、Pythonサードパーティモジュールを使用する場合は、パッケージ管理サイト PyPI - the Python Package Index : Python Package Index を読むことになります。Pythonだけではないですが、Pythonの場合は特に英語に慣れるべきです。

と書きつつ、私は英語が苦手なので、Google 翻訳 - Chrome ウェブストア これを使ってます。相変わらず英語はダメですが、機械翻訳した日本語に慣れてきました。そのせいか、先述したオライリーの直訳っぽい日本語もスラスラ読めます。

 

パッケージ管理

豊富なサードパーティーモジュール(パッケージ)群を管理するために、pipというものを使います。他にも色々あるみたいですが、まずはpipです。

pipの使い方とインストール - Python入門から応用までの学習サイト で分かり易く説明してくれてます。こちらのサイトは、pipだけでなくPython全般のことを初心者(かつWindowsユーザー)にとても親切に説明してくれてます。ありがたいです。

まずは "pip install -r requirements.txt" は使えるようにしましょう。もう少し凝りたい方は、Python アプリ依存パッケージ管理 ベストプラクティス集 - Qiita など参考にされると良いでしょう。

 

仮想環境

Pythonを始めた頃、勉強に使った色々なサイトに「仮想環境を作成しよう」と当然のように書いてあって「なんで?」と思いました。これも「パッケージを使い分けるのに便利だから」だと思います。

仮想環境を使用すると、PythonインストーディレクトリとPythonパッケージディレクトリを簡単に作成/切り替えできます。開発するアプリ毎に使用するPython(のバージョン)とパッケージをそれぞれ管理できるのです。

例えば、

アプリAでは、Python2.7でDjango1.11を使用したい。

アプリBでは、Python3.6でbottle0.12を使用したい。

場合でも、アプリAはPython2.7の仮想環境を参照し、アプリBはPython3.6の仮想環境を参照することが簡単にできるようになります。

ということで、仮想環境を使った方が便利です。仮想環境の作成/切り替えは、

Python/Djangoの開発環境構築 の際にcondaを使ってやってます。

もっと知りたい方は、

Pythonの仮想環境構築(2017年版) pyenvとpyenv-virtualenvとvirtualenvとvirtualenvwrapperとpyvenvとvenv - Qiita 

など参考にしてはいかがでしょうか?

 

 規約

当然ですが従わなくても動きます。が、新しいプログラム言語を始める際は、その言語の規約には目を通しておくべき。Javaの規約で書かれたPythonプラグラムを見たことがありますが、とても見にくかった…。

Pythonの規約は PEP8(日本語) です。

規約を守ってるかをチェックしたり、自動的に修正するツールもあります。

Python のコーディング規約 PEP8 に準拠する - Qiita

Eclipse+PyDevでPythonコーディング規約(PEP8)を準拠するための環境構築 - Qiita

使ってなかったので参考にしよう。

 

日本語(データ)の扱い

日本語データの取り扱いでハマることが何度かありました。3系では問題ないようですが、私がちゃんと使ったのは2系なのでその際の注意点を

特にハマったのはデータの文字コード変換です。機種依存文字、氏名でたまに使われる難しい方の漢字とかは標準モジュールでは変換できません。pykf 0.4 という拡張パッケージで変換できるのですが、これを発見するのとWindowsへのインストールに苦労しました。

この辺とか参考にしたような…

機種依存文字対策でpykfをインストールしてみた – BTY備忘録

それでもエラーが出て、これもインストールしたような…

Download Microsoft Visual C++ Compiler for Python 2.7 from Official Microsoft Download Center

人って嫌な記憶はなかったことになる仕組みになってるらしいので記憶があやふやで…。