Fluent Python読後感

2427 ワード

2017.10.7断続的に、月を費やしてFluent Pythonを読み終えたはずだ.もちろん、本当に読んだわけではありません.Chapter 16 coroutine,Chapter 17,18 Concurrency with futures/asyncioの3章は読めなかった.なぜなら、このいくつかの章を読んだとき、国慶節の休暇はもうすぐ終わります.この3章に比べて、後の章が魅力的なのでスキップします.スキップしたらスキップしましょう.
読書の過程で多くのメモを取った.最初はノートを書くのに可読性をあまり考えなかった.自分に見せたものだと思っていたからだ.しかし、その後は気分が悪くなった.一つは可読性が悪く、自分の再読意欲に影響を与えることだ.第二に、もっと重要なのは、ノートを書く過程で可読性を重視すれば、自分でもっと深く浅く考え、全面的な条理、つまり思考加工がもっと深くなり、即時の理解を深めることができ、長期的な記憶にも役立つ.それなら、喜んでやらないわけにはいかない.さあ、余計なことは言わないで、Fluent Pythonに戻ります.
全体的な評価は分かりやすく、システムが全面的で、深くて浅い.私が読んだのは英語の原版で、翻訳版ではありません.なぜなら、個人が自分の英語がどんなに上手だと思っているからではなく、翻訳版が本当に読みにくいからです.最初の3章は翻訳版を読んで、翻訳がいいと思います.しかし、第4章:テキストとバイトのシーケンスを読むと愚かになった.コードビット、バイト記述の2つの名詞に遭遇したためである.どの字も知っていて、組み合わせて語にすることができて、本当にそれらの意味を理解することができません.これは何が紹介する新しい概念なのか分からない.いくつかのsectionを読んでもその意味をgetしなかった.急に落ち着かなくなった.そこでまたネットで本の英語の原版を探しました.元の符号ビットはcode point, the identity of a character、バイト表記はbyte representationである.よし本当に翻訳者のせいではありません.一部の概念は中国語に原生語彙がなく、自分で発揮するしかない.その後の内容はすべて英語の原版を読んだのです.言葉から言えば、書くのは本当にいいですね.ええ、内容的にもいいですね.私にとって、本の広さと深さは十分で、Pythonに対する理解を大きく広げ、深めました.
次はこの本を読んでから一番深い感想です.Pythonを使う前に、本人が最も多く使ったのはJavaだったので、Pythonを勉強する過程でPythonとJavaのいくつかの言語の特性を常に比較することができます.次の説明は相変わらずです.
  • Pythonのプロトコルプロトコルはインタフェースです.Javaでプロトコルを実現するにはimplements/extendsインタフェース/抽象クラスが必要です.implements/extendsインタフェース/抽象クラスはimplementsそのすべての方法を必要とする.しかし、確かに使わない方法があるので、空いていましょう.敷地も見苦しいしPythonで1つのプロトコルを実現するには対応する方法を実現するだけで、すべての実現は必要ありません.必要なものを実現すれば使えます.とても便利です.
  • Pythonの関数も対象であり、関数とクラスの間に絶対的な境界はない.PythonのOOPは、Javaよりはるかに遠い.
  • Pythonにおけるアクセス制御メカニズム.Pythonの第一印象は、PythonがJavaのように厳格なアクセス制御メカニズムを持っていないことです.訪問するかどうか、修正するかどうかは、ほとんどの場合、約束と自覚にかかっている.しかしPythonは、属性アクセスを制御するためのdescriptorプロトコルを提供する.また、descriptorでclassの属性をインタフェースに露出することは、Javaのように冗長なgetter/setterを多く書く必要がなく、より簡潔である.
  • safetyとsecurity.Pythonはclassとinstanceに対する様々な動的操作(Monkey patching)をサポートし、完備したアクセス制御メカニズムもサポートせず、無意識の誤った呼び出しを防止することができるが、意図的な悪意のある呼び出しを防止することができない.初めて見ると、この点はJavaに及ばない.しかし、Javaが提供する制御制限メカニズムは絶対的な安全を保証することですか?Absolutely NOT. Javaでprivateプロパティに必ずアクセスするには、可能です.だから、JavaでもPythonでも、設計時にsafetyのために考えるしかないが、securityは保証できない.
  • Pythonでは、特定の操作が特定の特殊なメソッドの呼び出しをトリガーする.例えば、len->__len__[]->__getitem__for ... in->__iter__などである.易用性霊活性はいずれも非常に高い.

  • よし、差が少ないから先にそうしよう.