Python好き
私は Python が好きです。
私が Python が好きな理由と、 Python をすすめてみる記事です。
また、Pythonの使い方についてなど自分の意見を少し書いてみる記事です。
構文が好き!
Pythonの構文好きです!
例えば、世の中の言語で変数を定義するときに
int x = 0;
let x = 0;
const x = 0
とかします。xを定義するのに、こんなにするには冗長だと思いませんか?
Pythonなら、
x = 0
ですよ。
セミコロンも不必要です。世の中の言語で文末にセミコロンがない言語は少数だと思います。
改行で代替できます。タイプ数は約行数分削減できますね。
嫌い?
Pythonの構文を、他のプログラミング言語の経験がある人がみて、不快とかいう人がいるらしいです。
例えば、インデント
def foo():
pass
どうやらこのインデントをベースにしたブロックが嫌な人が多いみたいです。
この他にも、構文が気持ち悪い人が多いみたいですが、私は構文でプログラミング言語をやめるのはもったいないと思います。
例えばJSX。
const element = <div>hello</div>
私はこれが苦手だったと思います。しかし平気になりました。私の周りでJSXが嫌いだった人のほとんどが使ってるうちに慣れてます[要出典]。
言語の「構文」の苦手は、大体慣れによって解決できると思います。
動的型付けだから好き!
世の中は静的型付けムードです。
何でもかんでも静的型付けです。
もちろん静的型付けは悪くはないです。コードの保守性や品質は上がる可能性があります。
しかし、やっぱり動的型付けは良いです。
TypeScript で、データを取得するまではnull
の変数を作る場合を考えてみましょう
let data: null | Data = null
data = ...
この: null | Data
、冗長だと思います。
このようなことををするたびに毎回: null | Data
を書かなければいけないのです。とてつもなく疲れますね。
Pythonなら
data = None
data = ...
すごいですね!
これが動的型付けのメリットです。
自分でコードの挙動を把握できる場合で、静的型付けなんて邪魔です。
オブジェクト指向だから好き!
Pythonは、オブジェクト思考言語です。全てが「オブジェクト」によって作られています。
例えば、int
型。
floatを整数にするとき、
int(3.31)
のようにします。このint
は、クラスなのです。このコードは、int
のクラスのインスタンスを作成しています。
Dictを生成する{}
や、Listを生成する[]
も、クラスのインスタンスを作成しているのです。
さらに、class
もオブジェクトです!
int
というクラスもtype
クラスのインスタンス、つまりオブジェクトなのです!
このtype
は、自身のインスタンスです。とても美しいですね。
しかも、演算処理もオブジェクトが操作できます。
例えば、
class MyInt:
def __init__(self, n):
self.n = n
def __add__(self, myint):
return MyInt(self.n + myint.n)
これにより、MyInt(1) + MyInt(1)
のような演算子をオブジェクトが利用できて、MyInt(2)
が結果となります。
Pythonの値の全てオブジェクトである。美しすぎます。
Jupyter Notebookのと相性
Jupyter Notebookとの相性がめっちゃいいです。良すぎます。
Jupyterは、コードの記述をPythonなどの言語を用いて簡単に行えるツールです。とてもよいツールです。
この画像は、Google Colabと言う環境を用いているものです。
「セル」という単位に分けてコードを記述するのですが、大きなメリットとして、変数が保存されるのです!
セルごとに実行できるので、「少し変更して実行」というのがとても便利に行えます。
データの整形などをすぐに行えて、簡単でスピーディーなPythonとめっちゃ相性がいいです。
さらに、「0」と書かれている出力エリアにグラフを描画したり、HTMLをレンダリングできたりします。
shellの上ではできないようなことです。便利すぎます。
ライブラリが充実すぎる
標準ライブラリがめちゃくちゃ充実しています!
UUIDを作成したり、超便利な日付ライブラリや、圧縮処理、暗号化、HTMLパースまで、いろいろなことが標準ライブラリのみでできるのです!
しかも、Pythonのコミュニティが十分発展しているため、標準ライブラリになくても外部ライブラリに多様なものがあります!
Pythonの合うところ、合わないところ
私はこの記事で、Pythonのいいところをたくさん書きましたが、それは負の面にもなります。
例えば、変数定義にlet
などがいらないところ。
簡単に変数を定義できて、イージーではありますが、変数の代入と定義の区別がつかずにバグを発生させてしまったり、他の人がコードを読むのがハードになってしまったりします。
また、動的型付けも、簡単にコードを書いて簡単にスピーディーにコードを走らせることができますが、同じように変数の代入と定義の区別がつかずにバグを発生させてしまったりします。保管が効きにくくなってしまったりして逆に遅くなることもあります。
私はPythonが好きですが、Pythonを選択しないことが多くあります。
Pythonは、簡易的なものや、一度だけのデータの処理、ふと思い立った小さなアイデアを実現するためなどに使っています。
Pythonは簡単です。その「簡単」を、できるだけいい方向に使うよう考えていくといいと思います。
Discussion
超小規模開発、個人開発ならPythonでいいかもですね
PyTorchは超小規模開発に該当しますか?
該当します。
状況によって異なりますが、大規模開発においてはPyTorchは使いません。
小規模開発でPyTorchが使用出来ないのはどういった理由がありますか?また何を使用するべきですか?
小規模開発ではPyTorchは使用できます
大規模開発ではTensorFlow等が良いと思われます(拡張性が高いため)