web-dev-qa-db-ja.com

ハッキングPython "Requests"ライブラリ..中間のpythonistaとして開始するにはどうすればよいですか?

私の質問は概念的ですが、私にとって非常に重要です。

私は中級者ですPython開発者です。私はそれについて十分に知っており、実際に日常的に使用しています。今、私の機能をライブラリ/ APIユーザーから "に変換したいと思います。デザイナー」の1つ。

" Python Requests " library byKenneth Reitzは、探索するのに非常に適した場所であることがわかりましたPythonパターンとイディオム。大きな問題を本質的なModulesに分割し、必要なクラス/関数を定義し、それらを使用して連携する方法を学ぶ必要があります。

私はそのような規律を欠いており、この知識を得るために飢えています。

このライブラリにどのように飛び込む必要がありますか?それはbigであり、多くのモジュール(もちろん、論理名を含む)、クラス、およびメソッドがあります。私はコードを読み始めましたが、自分がどこにいて、コードのこの部分が何のために設計されているのかわかりません。

2
Soask

焦点を当てる。質問を考えて、それに答えてみてください。例えば:

  • ライブラリはどのようにして辞書をWebサーバーに送信するのに適した形式にエンコードしますか?
  • ライブラリは認証情報をどのように保存しますか?
  • ライブラリはどのようにしてヘッダーの辞書をWebリクエストに変換しますか?
  • ライブラリはどのようにログを実装しますか?

... 等々。

2
Bryan Oakley

一般的なタスクに従うことから始めます。たとえば、通常のGETリクエストがどのように処理されるか、またはデータが到着した後の.json()メソッドがどのように機能するかを調べます。

コードの本体によって主題に精通するのに役立ちますモデル化。クライアントの観点からHTTPがどのように機能するかを知ることは役に立ちます。 302リダイレクトとは何か、またはHTTPがヘッダーを使用して情報を交換する方法がわからない場合は、進行中のすべてを理解するのが難しくなります。

幸いなことに、requestsライブラリは、懸念事項を適切に分離して維持します。たとえば、urllib3ライブラリの内部に深く入り込む必要はありません。

2
Martijn Pieters

@Martijn Pietersが指摘しているように、ライブラリが解決する問題を知る必要があります。つまり、実際には、問題ドメインを理解する必要があります。

そうすれば、著者が行った選択についてアイデアを持ち、一部を評価し、他を批判することができます。

ライブラリが大きすぎてすぐに概要を把握できない場合は、コードが何をしているのか(少なくともおおよその)アイデアがある場所から始めることをお勧めします。 requests/api.py

  1. そこで見つけたオブジェクトを理解し、
  2. 読んでいるコードがこれらのオブジェクトをどのように変更するかを理解してください。
  3. (およびどの)オブジェクトが作成されているかどうかを確認し、
  4. それらのオブジェクトが何のために使用されるか。

いくつかの出発点からこれを行うと、全体の概要がわかります。未知の領域を探索するようなものです。

1
kr1