2023年10月1日日曜日

Pythonの良くないところはなんでしょう?私はHaskellやRust、Goといった言語を触ってきましたが、未だに1番書きやすいと感じるのはPythonです。

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

Hideki Ikemoto
 · 
フォロー

この質問の回答が浅いものばかりなのでについカッとなって、自分が考える、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を使うときにハマった・・・

  1. # こっちだとモックできない 
  2. from unittest import mock 
  3. from foo import bar 
  4. with mock.patch("foo.bar") as m: 
  5. print(bar()) 
  6.  
  7. # こっちだとモックできる 
  8. from unittest import mock 
  9. import foo 
  10. with mock.patch("foo.bar") as m: 
  11. print(foo.bar()) 
  • ジェネレータ関数が通常の関数と同じでyieldがあるだけ

flake8プラグイン作るときにハマった・・・

ついでにあまり嫌いじゃないこと。

そうだけど「こう使うなよ!」と早いうちに知ったのでそれほどヘイトは溜まってないかなぁ・・・

  • Python2

自分が使い始めたときは完全にPython3でPython2って何それ?って感じだったので・・・

0 コメント:

コメントを投稿