Pythonの振り返りと整理1:Pythonの基礎


0.説明
        
Pythonを勉强するのは実は良い时间があって、前にも多くのノートをしましたが、本当にPythonをしっかりと勉强しなければなりません.Pythonシステムに対する理解がなければ、十分ではありません.最も基础的な知识でも、よく振り返って整理することにしました.
もちろん、「Pythonコアプログラミング」という本を綱に、Pythonに対する自分の理解をシステムの一線につなげたい.
1.文と構文
  • `:注釈
  • ``:改行、閉じたオペレータであれば`()`,`[],`{}`など、``
  • を使用しなくてもよい
  • `:`:セミコロンはコードヘッダとコードボディを
  • に分離する.
  • `インデント`:異なるコードブロックを区別するための
  • `;`:同じ行に複数の文を書きますが、
  • は推奨されません.
  • `モジュール`:一つ.pyスクリプトファイルはモジュール
  • です
    2.変数付与
    (1)割り当てオペレータ:=
  • Pythonでは、オブジェクトが参照によって渡され、値を付与すると、そのオブジェクトの参照(値ではない)がこの変数に付与されます.
  • また、Python付与文には戻り値はありませんが、付与チェーン:
  • を使用できます.
    >>> a  =  (a = 3)
      File "", line 1
        a = (a=3)
              ^
    SyntaxError: invalid syntax
    >>> y = x = 3

    (2)増分割付
  • は、+=のような増分賦値のみであり、自増自減の方法
  • はない.
  • プロパティ:可変オブジェクト(リスト、辞書など)は変更(参照をコピーする必要はありません)、可変オブジェクト(数値、メタグループなど)は新しいオブジェクト
  • を割り当てます.
    (3)多重割付
  • オブジェクトは複数の変数で参照することができ、複数のオブジェクトは複数のオブジェクトで参照することもできる
  • .
    >>> x = y = z =1

    (4)多重代入:メタグループ代入
    >>> (x, y, z) = (1, 2, 'a string')
  • は括弧をつけなくてもいいですが、
  • を加えることをお勧めします.
  • は、2つの値の交換
  • に使用することができる.
    >>> x = 3; y = 4
    >>> print x, y
    3 4
    >>> x, y = y, x
    >>> print x, y
    4 3

    3.識別子
  • キーワード識別子:予約ワード、他の用途には使用できません.そうしないと、SyntaxError異常が発生します.
  • ビルトイン識別子:Yes_builtins__モジュールのメンバーは、プログラムの開始時またはインタラクティブインタラクションインタラクションインタラクションインタラクションインタラクションインタラクションインタラクションインタラクションインタラクションインタラクションインタラクションインタラクションインタラクションインタラクションインタラクションインタラクションインタラクションインタラクションインタラクションインタラクションインタラクションインタラクションインタラクションインタラクションインタラクションインタラクションインタラクションインタラクションインタラクションインタラクション
    >>> dir
    
    >>> dir()
    ['__builtins__', '__doc__', '__name__', '__package__']
  • __専用アンダースコア識別子:_xxx:クラス内の私有変数名は、`from module import*`でインポートできません.変数が私有の場合は、この方法をお勧めします.xxx__:組み込み識別子
  • のようなシステム定義名
    また、Pythonでは識別子リロードはサポートされていないため、いつでも名前バインドは1つしかありません.
    4.基本スタイルガイド
  • 注記:#番号
  • ドキュメント:obj._を使用して、モジュール、クラス宣言、または関数宣言の最初の値が割り当てられていない文字列.doc__アクセス
  • インデント:タブ
  • の代わりにスペースを使用
  • 識別子名:名前が短い有意義
  • Pythonスタイルガイド:import this
  • (1)モジュール構造とレイアウト
  • 開始行(Unix)
  • #/usr/bin/env python

    これにより、スクリプト名を入力するだけでスクリプトを実行でき、解釈器を直接呼び出す必要がなくなります.
  • モジュール文書
  • ''this is a test module''

    obj._からdoc__アクセス
  • モジュール導入
  • 変数定義:グローバル変数
  • の代わりにできるだけローカル変数を使用
  • クラス定義
  • 関数定義
  • メインプログラム
  • if __name__ == '__main__':
        My_function()
    #        ,__name__       ;
    #          ,__name__   '__main__';

    メイン・プログラムについては、次の点に注意してください.
  • 1.ほとんどのモジュールの作成の目的は、スクリプトとして実行するのではなく、他のモジュールにインポートされることです.つまり、メインプログラムを含むモジュールが実行されるモジュールは1つしかありません.
  • 2.最上位レベルのPython文(インデントなし)は、モジュールがインポートされると実行されます.
  • 3.通常、メインプログラムモジュールにのみ大量のトップ実行可能コードがあり、他のすべてのインポートされたモジュールにはトップ実行可能コードが少ないだけで、すべての機能コードは関数またはクラスにカプセル化されるべきです.上記の3点については、実際のプロジェクト開発における例に連絡すればよく理解できます.

  • (2)メインプログラムにテストコードを書く
    インポートされたモジュールの関数の機能をテストしたい場合は、メインプログラムの方法を使用して、その関数を導入して実行することができます.これがテスト機能の使用です.もちろん、大規模なプログラムではunittestを使用する傾向があります.
    5.メモリ管理
  • 変数定義:変数はPythonで明示的な変数宣言文を必要とせず、変数は最初の付与時に自動的に宣言されます.
  • ダイナミックタイプ:変数はタイプPythonのオブジェクトのタイプとメモリ占有量を指定する必要がなく、実行時に決定されます.
  • メモリ割り当て:メモリ管理Pythonインタプリタに関心を持たずに、内部管理の複雑なタスクを引き受けます.
  • 参照カウント:オブジェクト回収
  • (1)参照数を増やす
  • オブジェクトが作成する変数に値が付与されると、そのオブジェクトの参照カウントは1
  • に設定される.
  • オブジェクト(の参照)が他の変数に割り当てられた場合、またはパラメータとして関数、メソッド、クラスインスタンスに渡された場合、またはウィンドウオブジェクト(リスト、辞書など)のメンバーに割り当てられた場合、オブジェクトの新しい参照が作成され、参照カウントに1
  • が加算されます.
    >>> x = 3.14    # 1,       
    >>> y = x
    >>> foobar(x)
    >>> myList = [123, x, 'xyz']

    (2)参照数を減らす
  • ローカルリファレンスは、関数の実行が完了するとローカル変数が破棄されるなど、その役割範囲を離れます.
  • オブジェクトエイリアスが明示的に破棄される
  • >>> del y
  • 変数が別のオブジェクトに割り当てられると、元のオブジェクトの参照カウントも自動的に1
  • 減少する.
    >>> foo = 'xyz'
    >>> bar = foo
    >>> foo = 123
  • オブジェクトは、ウィンドウオブジェクトから削除する
  • .
    myList.remove(x)
  • ウィンドウオブジェクト自体が破棄する
  • .
    del myList

    すなわちdelyを実行すると、次の2つの結果が得られます.
  • 1.現在のネームスペースからy
  • を削除
  • 2.y変数に対応するオブジェクトの参照カウントが1減少した場合、メモリにオブジェクトがまだ使用されている場合、追加の参照が追加され、回収されません.
  • ごみ収集
  • インタプリタはオブジェクトの参照数を追跡し、ゴミ収集器はメモリを解放します.実際、ゴミ収集器は、参照カウントが0のオブジェクトと、参照カウントが0より大きいが破棄されるべきオブジェクト(ループ参照のオブジェクトなど)を検索するための独立したコードです.
    ゴミ収集器=参照カウンタ+循環ゴミカウンタは、循環参照がある場合に便利です.
  • 循環参照:少なくとも2つのオブジェクトが互いに参照する場合、すなわち、他のすべての参照が消えた場合、両者が生成するそれぞれの参照は依然として存在し、例えば2つのクラスにそれぞれのインスタンス
  • がある.
  • リファレンスカウンタ機能:1つのオブジェクトのリファレンスカウントが0になると、解釈器は一時停止し、このオブジェクトとそのオブジェクトのみがアクセス可能(到達可能)な他のオブジェクトを解放する(そうすると、他のオブジェクトのリファレンスカウントは必然的に1である)
  • 循環ごみカウンタの役割:参照カウンタの補完として、ごみ収集器も割り当てられた総量の大きい(および参照カウントによって破棄されていないもの)オブジェクトに注意し、この場合、解釈器も停止し、参照されていないすべての循環
  • をクリーンアップしようとする.
    基本的には理解できますが、具体的にどのように実現するかは、Pythonのソースコード分析を見る必要があります.
    6.最初のPythonプログラム
    主に、モジュール変数をローカル変数で置き換えます.
    たとえばosを使用します.linesep、複数回使用する場合は、osのため、このモジュールのグローバル変数またはローカル変数として定義することをお勧めします.linesepでは、次の2つのステップを行います.
  • まずosを検索し、モジュール
  • であることを確認します.
  • このモジュールでlinesep変数を検索すると、よく使用されるモジュール属性がローカル参照に置き換えられ、プログラムをより速く実行できます.