【JS】JavaScriptを書いてる人が思うPythonの若干嫌なところ
こんにちは!今日は普段JSばかり書いている私がたまに仕事でPythonに遭遇した際に思うPythonの嫌なとこを腹いせに書いていきます。ごめんなPython。
ラムダ式がなんか汚い
これみて
数字に1足して返すだけの関数plus1です。上がJS下がPythonね!
const plus1 = n => n + 1
plus_1 = lambda n: n + 1
なんかこう、Pythonは野暮ったいというか…
JavaScriptは矢のようにシュッとしてるのに、Pythonは何、棍棒?みたいな。
まあ見た目の話は良いんですよ。個人的に辛いのは改行できないところ…これは良いのに
const plus1 = n => n + 1
これは駄目なの…
plus_1 = lambda n:
n + 1
後にも書きますが、**Pythonは「改行していいか?」がとてもわかりにくい。**わかりにくい。
mapとfilterが超使いにくい
pythonってmapとかreduceとかfilterとかあんまり使い勝手良くないしreduceに至っては一手間かけないと使えないし、イテレータに対する思想がJavaScriptとは違うのかな? #python #javascript
— Mizutani@フロントエンドエンジニア (@sirycity) June 9, 2020
戻り値が配列じゃない。これに尽きます。イテレーターって何!?
しかも昔(v2)は戻り値が配列だったんですって。どうして…
mapで返ってきたやつをまたmapとか、そういうのができないのがつらい。
const three = [0, 0, 0]
.map(n => n + 1)
.map(n => n + 1)
.map(n => n + 1)
console.dir(three) // [3, 3, 3]
こんな感じに(これはちょっと極端だけど)
reduceに至っては標準でない
reduceは標準じゃないんだって… 仲間はずれ…
これないと駄目みたい↓コンパイラ言語かよ。
import functools
まあこの1行足せばいいんだけどな別に
あとreduceは大丈夫だけどimport from とかの順番おかしない?英語の文法的にはJSがおかしいのかな?
改行していいかわかんない
インデントでブロックを作るってのはそれはもう、 とても良いアイデアだと思います。綺麗ですしね。
でも今はPrettierとかあるし。
こうなるとおちおち改行もできないというインデントブロックの負の側面がどうしても気になってしまう… コメントまでインデントに気を遣うのがなー:(
Python書ける人はどこで改行してokとか分かるんかな?
三項演算子がない
これも三項演算子使う派としてはつらい。Pythonはif elseになるし順番わかりにくい…ネストできない…
1 + 1 === 2 ? true : false // true
True if 1 + 1 == 2 else False # True
余談ですがスクリプト言語の三項演算子ってJS以外はどれもクセがあるって思います。
Pythonは勿論のことPHPは評価の順番おかしいしRubyは記号の前で改行できない、 LuaとPerlは知らないけど。
4スペ
2スペ派としてはつらいけどこれはいいや!
おわりに
むしろ嫌な点が6つしかない!Python最高!とはいかんけどまあ好き!
個人的にはJSの次に好きだし今後間違いなく伸びるので、末永くお付き合いしたい言語です。以上。