PythonTop
pythonの環境構築
pythonの環境構築ではanacondaを使う方法とpyenvを使う方法がよく紹介されている.私はpyenvを使う方法を推奨したい.というのも,パッケージによってはanaconda下で動かないものがまれに存在し,anacondaで環境を作っているとそういう時に困るからだ.pyenvで環境を作っておけばそういう時にanacondaではない(例えばminicondaなど)で環境を作ることができる.というわけで汎用性の面でpyenvの方が優っていると考えている.
pyenvのinstall方法
macならbrewでインストールすることが可能.
brew install pyenv
githubからcloneすることもできて,こちらはどのプラットフォームでも動作するのでおすすめだ.
# ~/.pyenvというディレクトリにインストール
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
# オプションでpyenvの高速化のためにdynamic Bash extensionのインストールも可能.
cd ~/.pyenv && src/configure && make -C src
いずれの方法でインストールしたとしても,bash_profileやzshrcに以下の設定が必要だ.
export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
pyenvで新しい環境を作る場合,
pyenv install --list
でインストールできる環境を確認した上で,例えば
pyenv install anaconda3-2023.03
のようにすれば良い.代替として最新版でよければ
pyenv install anaconda3-latest
でも可.
anacondaのinstall方法
公式ページからgraphical installerまたはcommand line installerをダウンロードできる.
# コマンドラインインストーラの場合はダウンロード後,以下を実行.
bash /path/to/Anaconda3-2022.05-MacOSX-arm64.sh
PATHの設定が自動的に.zshrcに書き込まれているので必要に応じて書き直すべし.
仮想環境の構築
pythonを使う場合,プロジェクトごとに仮想環境を作成し,そこにプロジェクトごとにpythonと必要なパッケージをインストールしていくのが主流.例えばプロジェクトごとに違うバージョンのpythonが使いたい時にも,仮想環境をコマンド一つで切り替えれられるのでとても便利.
計算科学で使えるパッケージ
matplotlibによる作図
その他
自作モジュールのパッケージ化.CLIも含めることができる.
クラス
- 継承
-
メソッドのオーバーライド
-
superによる親クラスのメソッドの利用
コードの書き方
可読性の良いコードを書くために...
docstring(関数やクラスのドキュメント)
コーディングスタイル
-
_(アンダースコア)を関数の前につけた場合 この場合,システム的な制約を受ける.関数が含まれるモジュールからワイルドカードでインポートする場合にアンダースコアで始まる関数は読み込まれない.
-
_(アンダースコア)をクラス内のメソッドの前につけた場合 そのメソッドはクラスの中だけで利用するという慣例がある.わかりやすさのためにつけておくのが吉.
-
__(アンダースコア2つ)をクラスの変数やメソッドの前につけた場合 ネームマングリング(Name Mangling)が適用される.アンダースコア一つと違ってクラス外からのアクセスができなくなる.
自作モジュールに関して
自作モジュールをjupyter環境でリロードするには
%load_ext autoreload
%autoreload 2
の2行を書いてこの行を再評価する.
-
サブコマンド
https://qiita.com/oohira/items/308bbd33a77200a35a3d https://gist.github.com/jirihnidek/3f5d36636198e852280f619847d22d9e
コーディング全般
- 驚き最小原則
- Separation of concerns
- Single-responsibility principle
読みやすいコードのために気を付けるべきこと.
- 1: 中身が推測できる関数名(getXXX,)
-
2: 型や可視性が推測できる変数名(リストならxxxListなど)
- デバックオプションには
__debug__
変数を利用する.if __debug__: print("Debug ON") else: print("Debug OFF")
のようにして,
-O
オプションをつける.python -O abc.py