https://jp.quora.com/Python%E3%81%AE%E8%89%AF%E3%81%8F%E3%81%AA%E3%81%84%E3%81%A8%E3%81%93%E3%82%8D%E3%81%AF%E3%81%AA%E3%82%93%E3%81%A7%E3%81%97%E3%82%87%E3%81%86-%E7%A7%81%E3%81%AFHaskell%E3%82%84Rust-Go%E3%81%A8%E3%81%84%E3%81%A3
この質問の回答が浅いものばかりなのでについカッとなって、自分が考える、Pythonの悪い点を集めてみました。
3年くらいしか触ってないですがこのあたりです。分かりやすい順から。
- 多重継承というかInterfaceとかmixinとかがない
多重継承なんて嫌だ!と思ってたけどPythonでは使わないわけにはいかず。クラス名だけXXXMixinとかにしてなんとかしてます。
- f-stringというかformatの仕様
プレースホルダが `{}` なので誤爆します(GraphQLのクエリも作成適用できない)。あと複数行にも対応していないのでやりづらい・・・(こっちはformatでなんとかできるけど)。
- 複数行lambdaが使えない
そういうときは関数定義しちゃうけど微妙感はある。
- 文字列連結が+なくてもいい
"a" "b" = "ab" になるやつ。C言語はそうだけどバグの元になるのでイマイチ・・・
- 特殊メソッドを直接使わないといけないことがある
__class__とかメタプログラミングはまだしも__dict__を使わないといけないのが統一感なさげで微妙・・・
- with文がスコープを作成しない
具体的なコードは思い出せないけど、インデントがズレててテストのassertが通ってなくて泣いた記憶が。
- __init__.py の位置づけがモヤモヤする
3年やったけどいまだに雰囲気で書いている。どうせなら必須にして欲しい・・・
- mockと相性の悪いimport
unittest.mock.patchを使うときにハマった・・・
- # こっちだとモックできない
- from unittest import mock
- from foo import bar
- with mock.patch("foo.bar") as m:
- print(bar())
- # こっちだとモックできる
- from unittest import mock
- import foo
- with mock.patch("foo.bar") as m:
- print(foo.bar())
- ジェネレータ関数が通常の関数と同じでyieldがあるだけ
flake8プラグイン作るときにハマった・・・
ついでにあまり嫌いじゃないこと。
そうだけど「こう使うなよ!」と早いうちに知ったのでそれほどヘイトは溜まってないかなぁ・・・
- Python2
自分が使い始めたときは完全にPython3でPython2って何それ?って感じだったので・・・
0 件のコメント:
コメントを投稿