提言1:コンセプトPython的に理解します
完全に独自の特性Pythonのコーディングスタイルを反映:ニシキヘビのように定義することができます。
推奨読書:PEP 8 - Pythonのコードのためのスタイルガイド
提言2:Python的コードの記述
- 異なるオブジェクトを区別するだけの場合は避けてください。
- 例文字「O」と文字「L」小文字の「l」のような混乱の原因と簡単に使用することは避けてください。
- 最も重要なの理解しやすい長い変数名、変数名を恐れてはいけません。
提言3:の違いPythonとC言語を理解
- 「インデント」と「{}」
中括弧{}を使用して符号C、C ++、Javaおよび他の言語を分離するためには、Pythonは、厳密に(4つのスペースまたはタブ。1)注意およびタブスペースを混合することができないのインデントを用いています。 - 単一引用符(「)と二重引用符(「)
、単一引用符で囲まれた文字を表すCは、二重引用符は、文字列を示しているPythonの、単一および二重引用符の間には有意な差でいる間。 - 三項演算子(?:)
三項演算子は、他の...場合速記法で、文法的なフォームのC?X:Y、逆テイクにX、Yを撮るときCがTrueで表し、ノーPythonで三項演算子、同等の形式:XであればCの他のY. - ...ケース・スイッチ
PythonはそのようなC言語のような条件分岐文ではありませんが、あれば... elifのステートメントは、同じ機能を実現するために使用することができます。
提言4:適切なコードにコメントを追加します
ブロックコメント、コメント、およびドキュメントコメント行:Pythonコードのコメントの3つの形式があります。
コメントは次のことをお勧めします使用します。
- のみが複雑な操作、アルゴリズムをコメントし、十分に明確なコードがありません。
- 一定の距離だけ離れたノートやコード、あまりにもタイトではない、空白の数行後のブロックを左に最高のコメント。
- 関数と外部の追加ドキュメンテーションコメントへのアクセス方法。
提言5:よりエレガントな適切なコードのレイアウトを追加することで、空のエクササイズ、合理的な
参考のため、以下の図
勧告6:4つの原則の機能を書きます
- 関数ができるだけ短くなるように設計され、入れ子のレベルが深すぎてはなりません。
- 関数の宣言は、使いやすい、シンプル、合理的でなければなりません(関数名は、簡潔なパラメータを理解するのは簡単です)。
- 関数の設計パラメータは、下位互換性(それ以降のバージョンを開発しやすい)を考慮すべきです。
- 一つだけの機能。一貫性機能ステートメント粒度を確保するようにしてください。
勧告7:ファイルへの一定の焦点
これはほとんど使用されません、一定の機能のカスタムクラスを達成するために使用することができます。
提言8:使用が問題を識別するためのステートメントを主張
多くの言語でアサーション(アサート)が主にデバッガサービスように迅速かつ容易に入力異常または不適切な検査手続きとするために、存在します。
利用アサートは価格で来る、それがパフォーマンスに影響する場合がありますので注意してください、あなたがしようとしないことができます。
勧告9:時間のデータ交換価値は、中間変数を使用することは推奨されません
Pythonでは、二つの変数の値は、中間変数を交換する必要はありません
a = 10
b = 11
#不推荐的做法
tmp = a
a = b
b = tmp
#pythonic的交换方式,无需中间变量且效率更高
a, b = b, a
12345678910
提言10:遅延評価の特性を活用してください
遅延評価は、不活性な遅延計算又は計算として理解することができる利点が2つあるもたらすことができます。
- 効率向上のために不要な計算を回避
XがFalse直接リターンがFalseの場合であれば、xおよびy場合Pythonで条件式を、プログラムは、Y式の値を計算しません。xが真である場合ならxまたはyのために、Yの計算値は、直接発現しないとTrueを返します。 - スペースを保存し、データ構造があり、無限ループと呼ばれる
見つけるためにビルダー?Pythonのイテレータとジェネレータ
- 提言11:列挙代替本物*
- 提言12:タイプを使用することをお勧めします*
- 勧告13:*浮動小数点型を変換しよう
- 勧告14:警戒のeval()されました*
- 提言15:使用すると、(列挙)は、繰り返しのシーケンスを取得します*
- 提言16:* =区別しています
- 勧告17:可能な限り、互換性を考慮して使用ユニ*
- 勧告18:MOを管理するために合理的なパッケージ階層の構築*
- 勧告19:... IMPOから控えめに使用してください*
- 勧告20:絶対インポートを使用する優先順位*
- 私は21をお勧めします:私は+ = 1 *と等しくありません
- 勧告22:自動で使用してください*
- 勧告23:(ISO簡略化されたループelse節を使用してください*
- 勧告24:*以下の例外処理に従ってください
- 勧告25:最後に送信することは避けてください*
- 勧告26:なしの深い理解、オブジェクトを判断する権利*
- 勧告27:接続文字列が優先されなければならない*参加
- 勧告28:ときフォーマット文字列を使用するために.format方法*
- 勧告29:変数のオブジェクトと区別しません*
- 推薦30:第一の容器一致*:[]、()、{}および
- 勧告31:値がどちらもによって関数パラメータの受け渡しを覚えておいてください*
- 勧告32:潜在的なデフォルトパラメータにアラート*
- 勧告33:注意*
- 勧告34:深い理解のSTR()とのrepr(*
- 勧告35:staticmethodとのクラスメソッドを区別*
- 勧告36:文字列を把握*
- 勧告37:オンデマンド選択ソート()またはソート*
- 勧告38:コピーモジュールDを使用してください*
- 勧告39:カウンタが導通使用*
- 勧告40:イン深さは* ConfigPaを把握します
- 勧告41:argparse処理コマンドを使用します*
- 勧告42:大規模なCでパンダを使用してください*
- 勧告43:一般的な使用ElementTreeのソリューション*
- 勧告44:理解モジュールピック*
- 勧告45:別の良い選択をシリアライズ - *
- 勧告46:獲得したトレースバックを使用するには*
- 勧告47:ログレコードを使用してください*
- 勧告48:書き込みにマルチスレッドモジュールを使用します*
- 勧告49:キューのマルチスレッドのエンコーディングを使用します*
- 第5章*
- 勧告50:使用のためのモジュール*
- 51の推奨:使用ミックスインモードはプログラムすることができます*
- 52の提案:実用的なモデルをサブスクライブパブリッシュ*
- 勧告53:ステート・モード*
- 第6章*
- 勧告54:理解ビルドでOBJ *
- 勧告55:INIT()ではありません*
- 勧告56:理解名前*
- 勧告57:なぜ我々はそれ自体が必要なのです*
- 勧告58:理解MRO *
- 勧告59:記述を理解します*
- 勧告60:GETATTR()とのgetAttributeの違い*
- 勧告61:安全な小道具を使って*
- 勧告62:マスターMETAC *
- 63の提案:Pythonの精通*
- 勧告64:オペレータは、達成のオーバーロード*
- 勧告65:おなじみのPythonサンディエゴ*
- 66の提案:Pythonの精通*
- 67の推奨:ベースの発電機のコルーチンとGREE *
- 勧告68:GIL *を理解します
- 勧告69:管理オブジェクトと*
- 第7章補助ツールを使用して*
- 勧告70:PYPから*
- 勧告71:PIPを使用してインストールし、卵黄*
- 72の推奨:ペーストを行います*
- 73の推奨:単位を理解します*
- 勧告74:パッケージを書き込むために*
- 75の推奨:コードを改善するために、テスト駆動開発を使用*
- 76の提案:使用Pylintチェック*
- 77の推奨:効率的な*
- 勧告78:に公開したパッケージ*
- 第8章パフォーマンス]セクション*
- 79の提案:学習コードの最適化*
- 勧告80:性能を持ちます*
- 81の推奨:cProfileポジショニングを使用*
- 82の提案:使用memory_profilerとobjgrash分析*
- 勧告83:演算子を減らすための努力*
- 勧告84:マスター・サイクルの最適化*
- 勧告85:発電機を使用して*
- 86件の勧告:異なるデータ構造を使用します*
- 87の提案:SEを活用*
- 88の提案:使用はGIを克服meltiprocessing *
- 89の提案:使用スレッドプール*
- 90の推奨:C / C ++モジュールの拡張を使用*
- 91の提案:使用Cython書き込み拡張モジュール