effictive-pythonの第一章ノート

一つの方法は、とPython的考える章
1は自分自身の使用のためのPythonのバージョンを確認するため(のpython3)
python2(2020年ではなく、メンテナンス)のpython3(推奨):2つの主流Pythonのバージョン
人気のPythonランタイム環境はCPythonの様々な(デフォルト) 、Jythonの(Java)の
IronPythonの、PyPy(JIT、効果が有意でpython2、のpython3ほとんど効果なし)
2は、スタイルガイドPEP8続く
明確なPythonコードを書く方法を記述するためにPEP8リスト多くの詳細を。
ブランク
インデントのためのスペースを、NAタブ区切り
、各レイヤに関連する文法がインデントに4つのスペースで表現される
以上79があってはならない行あたりの文字
の最初の行に加え、長い表現の複数の行を占め、残りの行は、先行する再レベルを必要とプラス4つの空間は、
二つのクラスと機能の間の空白行で区切りファイル必要があり
、この方法は、から離間空白行の間で使用されるべき同じクラス
取得したリストの要素を使用して表両サイドにスペースを追加しないとき、またはファンクションキーパラメータの割り当てを呼び出します。
[0]
割当てが可変でない場合、スペースの左右両側には、添加されるべきでのみ微細な書き込み
A = B
という名前の
関数、変数、及び単語間の下線と、スペルする文字を小文字べき属性
DEF test_a() MY_NAME、self.my_nameは、
インスタンスのプロパティを保護し、単一のアンダースコアで始まる必要があります
self._leading_underscore
プライベートプロパティの例としては、二つの下線で始まる必要があり
、自己.__ double_leading_underscoreの
クラスおよび例外の各単語の最初の文字がフォーマット大文字で、
CapitalizedWordの
モジュールレベルが一定に、すべて大文字
ALL_CAPSの
クラスのインスタンスメソッドは、自己と呼ばれる最初のパラメータであるべきですオブジェクト自体が示す
クラスのメソッドの最初のCLS、自分の表すクラスと命名されるべき
表現や文を
のB bの代わりにならないれていない場合、インラインフォームを使用して負の単語、
検出方法の長さによって判断されるべきではありませんリストが空であるかどうかをlenの場合は代わりにsomelistない場合は、(somelist)== 0は、
[1]か「HI」およびその他の非NULL値somelist検出されたので、私たちは。必要がある
if文、forループ、しばらく一行を記述しないでください。循環および複合文を除いては、しかし、書くために複数の行にこれらのステートメントを取る必要があり
、常にファイルの先頭に配置する必要がありimport文を
モジュールの導入は、相対パスではなく絶対パスを使用するときに
、あなたが使用する必要があるインポート文への相対パスを記述する必要があれば輸入のfoo
順次三つの部分に分けられなければならないファイルのimport文。自分自身の使用のための標準ライブラリモジュール、サードパーティのモジュール、モジュールを表す
インポートSYS

インポート要求

自分のインポート
。3、バイトを理解し、STRおよびUnicode区別が
文字の配列の2種類がありのpython3とstrバイト、前者は元の8ビットの値が含まれている
Unicodeの含有
のpython3のSTRとUnicodeを、STRは、Unicode Unicodeを含む、元の8ビットの値を含みます
バイナリファイルにUnicodeの多くの方法があるが、UTF-8にエンコーディングを設定するのが一般的です。
ユニコードエンコードバイナリ転送
バイナリ転送ユニコードデコード
コードと最周辺インターフェイスに復号する際のPythonプログラムに記述され、使用のUnicode文字型のコア。
注意すべき二つの問題があります
strが7つのUnicodeとASCIIが含まれている場合、python2は、strが同じタイプのようですので。
関数はSTRを受け入れた場合にのみ取引アスキー状況で、あなたはユニコードを受け入れる場合、また、STRを渡すことができ、Unicodeを渡すことができます。python3のSTRとバイトでは等価ではありません。
あなたが開いているファイルハンドル.python3デフォルトでUTF-8を取得する組み込み関数を使用する場合には、第2、
のpython3のデフォルトはバイナリです。WB適応モードに変更することができ
、4複雑な式にヘルパーで置換された
式が複雑である場合、それは小さな断片に分解し、補助機能に転送することができます。
図5は、切断シーケンスの方法を理解し
、元のリストには影響しません新しいリストを変更、元のリストを切断した後は、新しいリストを生成しますが
割り当てのリストは、スライス操作場合は、元のリストは、関心の範囲内であろうとき、代わりに新しい値に値。異なる長さを置き換えることができます。
図6は、操作をスライス言葉で、開始、終了、およびストライドを指定しない
ストライドが負の場合、2つの割り当てにそれを解体考えます。行うために、切断の範囲は、ステッピング切断を行います。またはモジュールitertools isliceビルトインを使用する
。7、すぐに(もコレクションや辞書をサポート)置換マップとフィルタを押して、リストを使用して
、コードクリーナー
つ以上のリストが式が導出使用していない、8
ジェネレータ式の書き換えを使用して、9リスト内包で大量のデータは、
代わりに発電リストの内包表記に括弧の括弧に変更される
プッシュのリストがあまりにも多くのメモリの問題を取るためにためたデータは、大きすぎます。
10、可能な置換基は、列挙と範囲
列挙イテレータが発電機として包装することができる、及び要素のインデックスを返します。
2つのジップ機能付き11、イテレータを横断しながら、
リストには、メモリの問題があるだろう大きすぎるとジップpython2は、プロデューサーではない
ジップ同等の発電機でのpython3
長さによって2回の反復子が、奇妙な挙動を示すかどう。
最小のイテレータの長さを横断します。
内蔵モジュールitertoolsは長さが等しいかどうかを気にしない、複数の反復トラバース平行zip_longestを機能させることができる
ための他のブロックをライトバックし、一方がループしていない、12
、13 \他\最終的構造を除く各コードトライ\の使用の合理化をブロック
elseブロックは、コードの量を削減しようとするために使用することができ、文は例外ではありませんしようとは間隔を置いたコードブロックを除いて/要求の実行中に発生します

おすすめ

転載: www.cnblogs.com/lgh344902118/p/11297498.html