高度なPythonコンテンツ

Python 世界では、すべてがパレットの原則に従っておおまかに分布しています。 小さい部分は金持ちであり、大部分は貧しい人です(読みます、あなたは黄金の億を入力します)。 同じことがプログラミング教材にも当てはまります。 少なくともエントリーレベルではないものを見つけるのが非常に難しい場合があります。



Dive into Pythonなどを読んでドキュメントを読んだ後、疑問が生じますが、次に何を読むべきでしょうか? python.org で書籍リストを参照できます。 Advanced Booksのセクションがありますが、その中には6冊しかありません(7冊目は出ていませんでした)。



幸いなことに、Pythonには非常に詳細で高品質のドキュメントがあります。 しかし、その中でも、多くのトピックは表面的にしか触れられていないか、見つけるのが非常に困難です(ドキュメントが大きいため、どこを探すべきかわからない場合は見つけられません)。



以下は、Python、そのデバイス、機能に関する複雑な資料です。 すべては英語です(技術英語を知らないため)。 Dive into Pythonについて私はunningしています。 引用された資料のほとんどは、Pythonについての十分な知識とそのプログラミングの経験を必要とします。







公式文書の記事



データモデル

Pythonのオブジェクトに関する基本的な記事。 それは心で知られなければなりません(真実、真実)。 それなしでは、Pythonの動作をさらに理解することは事実上不可能です。 私も焦点を当てたいと思います:



例外

例外では、継承を処理する必要があります( PEP 352:New-Style Classesとしての例外 )。 Python 2.4では、 Exception



は古典的なクラスであり、 object



サブクラスではありません。 Python 2.5では、 Exception



すでにBaseException(object)



継承していBaseException(object)



。 これは新しいクラスです。 また、バージョン2.4ではKeyboardInterrupt



SystemExit



Exception



継承し、2.5 BaseException



継承しException







また、Python 2.4の例外階層とPython 2.6階層 (2.5と比較して、いくつかのクラスのみが追加された)を直接取得および比較(2つのウィンドウを並べて配置)することをお勧めします。





クラス、属性、およびメソッドに関する記事



Python 2.2での型とクラスの統合 、Guido van Rossum

新しいスタイルのクラスとは何かに関する言語の作成者からの記事。 なぜ読まなければならないのかを書く必要はないと思います(数回)。



Python 2.3メソッド解決順序 、Michele Simionato

メソッド(MRO)および属性へのアクセスの順序は、多重継承でどのように計算されますか? __mro__



属性を介して新しいクラスを取得できます。



シャラブチャトゥルベディ:

とても素敵で素晴らしい記事の本+美しくレイアウトされています。



Pythonのタイプとオブジェクト

type



object



はどのように関連していますか?



Pythonの属性とメソッド

新しいクラスで属性にアクセスする方法、関数とメソッドの違い、記述子の説明、MRO。



ニシキヘビになる

Pythonのスタイルでコードを書く方法(著者のすべての記事をリストするためだけに追加された)、それほど重要ではない短い記事。





メタクラス



メタクラスに関する[非常に有名な]引用を1つ挙げたいと思います。

           英語
 [メタクラス]はより深い魔法ですメタクラスは複雑な魔法です、 
 99%のユーザーが、どの99%の開発者であっても 
心配する。 心配しないでください。 もしあなたが 
それらが必要かどうか、あなたが必要かどうか尋ねます 
しないでください(実際にメタクラス化する人は、そうではありません。
彼らが確実に必要とすることを知る必要がある 
彼らはそれらを必要とし、本当に必要ないことを、絶対に 
理由についての説明が必要です)これを確信しており、彼らは必要ありません 
 Tim Peters(clp post 2002-12-22)理由の説明)。

                                     (あなたが知らないのは非常に悪いです 
                                    この記事のリンクの英語
                                    英語の資料のみ)


スタイルはもちろん、幅属性のないセルを含む表を描画するよりも、等幅で挿入する方が簡単です。 正直に約20分間試しました。



だから、 これはそうではありません 。 メタクラスがわからない場合は、Pythonがわかりません。 今、動機付けの後、あなたは記事に戻ることができます。



クラス作成のカスタマイズ

公式ドキュメント。



Pythonメタクラス:誰? なんで? いつ? 、マイク・フレッチャー 、PDF

メタクラスを使用することができる方法と理由の多くの実際的な例[しかし、しばしば必要はない 、著者]。



Pythonでのメタクラスプログラミングパート2パート3 、David Mertz、Michele Simionato

非常に詳細な記事は、骨ですべてを理解しています。 しかし、それは非常に退屈でアカデミックな記述です。 これがIBM DeveloperWorksの記事に対する私の偏見にすぎないことは完全に可能です。



Python 3000、PEP 3115のメタクラス

3番目のPythonのメタクラス。 主な違いは、 class Foo(*bases, **kwargs)



クラス定義class Foo(*bases, **kwargs)



__prepare__



機能と、順序付けされた辞書などのクラス属性のマッピングを返す__prepare__



関数のサポートです。



一般に、メタクラスについて:知って、知って、もう一度知る。 しかし! それらを使用することに決めた場合、考えて、もう一度考え、それにもかかわらず、それらなしでやってみてください;-D。





他のトピックに関する記事



Python 401:いくつかの高度なトピック 、PDF

文字列補間の最良かつ最も詳細な説明( 'Hello, %s.' % username



)。 さらに、イテレーター、ジェネレーター、ディスクリプター、メタクラス、メソッドの機能が遅い理由(オブジェクトは呼び出しごとに作成されるため)など



記述子の使い方ガイド 、レイモンド・ヘッティンガー

記述子の機能、それらの呼び出し方法と使用方法。



デビッド・ビーズリー

彼は非常に優れた、そして最も重要なことには、実用的な記事を書いています。 ジェネレータを使用してApacheログを解析する方法、またはコルーチンで「オペレーティングシステム」を記述する方法を読むことができるのは彼だけです。



Python GILの内部

Global Interpreter Lockの仕組みと、Pythonでスレッドを使用するとプログラムが遅くなることがある理由。



新しいGILの内部(Python 3.2)

Python 3.2に含まれる新しいGILの説明とテスト(および2.7に移植される可能性があります)。



システムプログラマ向けジェネレータトリックバージョン2

ジェネレーターの実際の使用とその利点(速度+低メモリ消費)。



コルーチンと並行性に関する好奇心の強いコース

コルーチンとは何か、通常のジェネレーターとは明確に区別する必要がある理由(これらには異なる機能があります:データを生成するものと、処理するものがあります)。 最後に、彼はそれらにオペレーティングシステムの類似物を書きます。



私の推薦

dir(method)



およびdir(func)



の結果を参照してください。 モジュールnew



itertools



functools



のヘルプをitertools



functools



。 まだわからない場合は、関数map



reduce



zip



およびfilter



精通してください(mapは一度に多くの反復子を取ることができます)。



抽象基本クラスとコレクションについて読んでください。 また、Pythonだけでなく、 Javaでも使用できます 。 ABCは、多くの点で後を追っています。



年次開発者会議であるPyConのWebサイトにアクセスしてください。 過去の会議の資料も利用できます(多くの場合利用できません)。 あなたは会議/スケジュールで見る必要があります



Python Cookbookを必ず読んでください。 この実用的な本は単に優れています。 decorate-sort-redecorateメソッドを使用して迅速にソートする方法、Pythonが使用するソートアルゴリズム(少数の要素の挿入ソートと大規模な要素のティムソート)、XMLの操作方法、モジュールの動的作成など。





おわりに



ブックマークに覚えているか見つけたと書きました。 それが大いに役立つことを願っています。 また、 ipythonとそれを忘れないでください? および?? ..(知らない人にとっては、これはPythonの非常に強力なインタラクティブシェルであり、質問はオブジェクトに関する情報を示しますimport sys; sys?



たとえば、 import sys; sys?



)。 あなたの中に強さが来るかもしれません。



All Articles