Python学習ノート==pythonをすばやく理解

61191 ワード

  • サンプルコード:
     1 def buildConnectionString(params):
     2     """Build a connection string from a dictionary of parameters.
     3 
     4     Returns string."""
     5     return ";".join(["%s=%s" % (k, params[k]) for k in params.keys()])
     6 
     7 if __name__ == "__main__":
     8     myParams = {"server":"mpilgrim", \
     9                 "database":"master", \
    10                 "uid":"sa", \
    11                 "pwd":"secret" \
    12                 }
    13     print buildConnectionString(myParams)

  • 宣言関数:
  • Ptythonは関数を持っていますが、C++やJAVAとは異なり、独立したインタフェース宣言や宣言実装はありません.関数を使用する必要がある場合は、それを宣言してから符号化を開始します.
  • Pythonは関数の戻り値の有無を区別せず、すべての関数はdefで始まる.
  • Pythonは返されるデータ型を定義していません.returnがあれば値を返します.なければNoneを返します.
  • Python関数のパラメータはタイプを指定する必要はなく、タイプは内部に保存されています.

  • ドキュメント化関数:
  • ドキュメント化文字列、三重二重引用符ドキュメント化多行文字列;
  • ドキュメント化文字列は、関数定義のコロン:後に記入する必要があります.
  • Python提供メカニズム:関数は実行時にドキュメント列の属性がある;

  • は何でも対象です.
  • は、任意の共通関数、クラス、または属性を参照できるモジュールをインポートします.
  • モジュールに定義された関数を使用する場合は、モジュールの名前を付けなければなりません.
  • Pythonのリストはオブジェクトで、辞書はオブジェクトで、モジュールはオブジェクトで、文字、関数はオブジェクトで、すべてオブジェクトです.

  • 関数の識別は1つのコロンと私たちが自分で使っている縮みだけで、括弧のようなものを使わず、縮みは始まりを表し、縮みは終わりを表しません.
  • テストモジュール:
  • はこの点を利用してモジュールをテストし、Pythonのモジュールは対象であり、いくつかの有用な属性がある.
  • if __name__ == '__main__' テクニックname__は、すべてのモジュールの組み込みプロパティです.name__名前は通常モジュールのファイル名ですが、標準関数のように実行できます.name__,デフォルトは_main__,これは特殊なデフォルトです.
  • この点について理解すると、モジュールの内部にモジュールのためにテストキットを設計することができ、モジュールが直接実行されると、_name__はい_main___, モジュールをインポートすると、_name__変わって、この時テストキットは無視されたので、大きなプログラムがモジュールに入る前に快適なデバッグができると言っています.

  • 辞書:
  • 辞書を定義
     1 >>> d = {"server":"mpilgrim", "database":"master"}#         ,#   d,     {}   ,   ;
     2 >>> d
     3 {'database': 'master', 'server': 'mpilgrim'} 
     4 >>> d['server']      #      
     5 'mpilgrim'
     6 >>> d['database']
     7 'master'
     8 >>> d['mpilgrim']  #        
     9 Traceback (most recent call last):
    10   File "<stdin>", line 1, in <module>
    11 KeyError: 'mpilgrim'

  • 辞書を変更
    >>> d["server"]="test"   #
    >>> d
    {'database': 'master', 'server': 'test'}
    >>> d["new"] = "start"  #        
    >>> d
    {'new': 'start', 'database': 'master', 'server': 'test'}

    辞書には順序の概念がない.
  • ディクショナリでのデータ型の混在
    >>> d
    {'new': 'start', 'database': 'master', 'server': 'test'}
    >>> d["sj"]=3
    >>> d
    {'new': 'start', 'sj': 3, 'database': 'master', 'server': 'test'}
    >>> d[2]="sta"
    >>> d
    {'new': 'start', 'sj': 3, 'database': 'master', 2: 'sta', 'server': 'test'}

  • 辞書から要素を削除
    >>> d
    {'new': 'start', 'sj': 3, 'database': 'master', 2: 'sta', 'server': 'test'}
    >>> del d[2]  #        
    >>> d
    {'new': 'start', 'sj': 3, 'database': 'master', 'server': 'test'}
    >>> d.clear()  #
    >>> d
    {}


  • リスト:
  • 定義リスト:
    >>> li = ["a", "b", "test", "shabi", "helmet"]  #5      
    >>> li
    ['a', 'b', 'test', 'shabi', 'helmet']
    >>> li[0]  #      
    'a'
    >>> li[4]
    'helmet'

  • 負のリストインデックス:
    >>> li
    ['a', 'b', 'test', 'shabi', 'helmet']
    >>> li[-5] #     li[n]=li[n-len(li)]
    'a'
    >>> li[-1] #           li[-1]
    'helmet'

  • リストを分割します.
    >>> li
    ['a', 'b', 'test', 'shabi', 'helmet']
    >>> li[0:3]     #    ,li 0 2     3
    ['a', 'b', 'test']
    >>> li[1:-1]
    ['b', 'test', 'shabi']

  • スライスの略語:
    >>> li
    ['a', 'b', 'test', 'shabi', 'helmet']
    >>> li[:3]
    ['a', 'b', 'test']
    >>> li[0:]
    ['a', 'b', 'test', 'shabi', 'helmet']
    >>> li[:]
    ['a', 'b', 'test', 'shabi', 'helmet']

  • リスト追加要素:
    >>> li
    ['a', 'b', 'test', 'shabi', 'helmet']
    >>> li.append("elimination")  #append
    >>> li
    ['a', 'b', 'test', 'shabi', 'helmet', 'elimination']
    >>> li.insert(2, "elinination")   #insert
    >>> li
    ['a', 'b', 'elinination', 'test', 'shabi', 'helmet', 'elimination']
    >>> li.extend(["shi", "shang"])  #extend
    >>> li
    ['a', 'b', 'elinination', 'test', 'shabi', 'helmet', 'elimination', 'shi', 'shang']

  • 検索リスト:
    >>> li
    ['b', 'elinination', 'test', 'shabi', 'helmet', 'elimination', 'shi', 'shang']
    >>> li.index("b")
    0
    >>> li.index('c')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: 'c' is not in list
    >>> "c" in li  #               false
    False

  • リスト要素を除去:
    >>> li
    ['b', 'elinination', 'test', 'shabi', 'helmet', 'elimination', 'shi', 'shang']
    >>> li.remove('b') #                  
    >>> li
    ['elinination', 'test', 'shabi', 'helmet', 'elimination', 'shi', 'shang']
    >>> li.remove('c')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: list.remove(x): x not in list
    >>> li.pop()  #                   
    'shang'
    >>> li
    ['elinination', 'test', 'shabi', 'helmet', 'elimination', 'shi']

  • リストオペレータ:
    >>> li = ["a", "b", "mpilgrim"]
    >>> li = li + ["new", "test"]  #    extend(otherlist),  +  ,extend() 
    >>> li
    ['a', 'b', 'mpilgrim', 'new', 'test']
    >>> li += ["two"]    #             
    >>> li
    ['a', 'b', 'mpilgrim', 'new', 'test', 'two']
    >>> li = [1, 2] * 3
    >>> li
    [1, 2, 1, 2, 1, 2]


  • シーケンス(メタグループ:tuple)
  • シーケンスは可変リストであり、定義されると変更できない.
  • シーケンスの定義
    >>> t = ("a", "b", 4, "z", "example")
    >>> t
    ('a', 'b', 4, 'z', 'example')
    >>> t[0]
    'a'
    >>> t[-1]
    'example'
    >>> t[1:3]
    ('b', 4)

  • シーケンスにメソッドはありません
    >>> t.append("new")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'tuple' object has no attribute 'append'
    >>> t.insert("new")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'tuple' object has no attribute 'insert'
    >>> t.indes("z")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'tuple' object has no attribute 'indes'
    >>> "z" in t   #   in
    True

  • シーケンスのメリット
  • シーケンスのループ速度はリストよりも速く、値セット定数が定義されている場合、
  • シーケンスを継続的にループする必要があります.
  • 辞書のキーワードは整数、文字列、および「いくつかの他のタイプ」ですか?シーケンスはそれらのタイプの1つです.シーケンスは辞書でキーワードを作ることができますが、リストはできません.シーケンスは文字列フォーマット
  • に使用される
  • シーケンスは、リストに変換することができ、逆も同様である.内蔵tuple関数はリストを受信し、ご飯または同じ要素を持つシーケンスを受信し、list関数はシーケンスを受信し、リストを返します.tupleはリストを凍結し、listはシーケンス
  • を解凍する.

  • 変数の定義
  • Pythonにはローカル変数とグローバル変数がありますが、変数宣言は明らかではありません.変数は付与によって生成され、作用範囲を超えた場合に自動的に消滅します.
  • if文はコードブロックであり、関数のように縮小する必要がある.
    if __name__ == "__main__":
        myParams = {"server":"mpilgrim", \
                    "database":"master", \
                    "uid":"sa", \
                    "pwd":"secret" \
                    }

  • Pythonでは、付与されていない変数を参照することはできません.これにより、異常が発生します.いつかありがとうPython
    >>> x
    Traceback (innermost last):
      File "<interactive input>", line 1, in ?
    NameError: There is no variable named 'x'
    >>> x = 1
    >>> x
    1


  • 文字列formating stringsのフォーマット
  • セットの中間部分で、C言語文字列のフォーマットに似ています.
    return ";".join(["%s=%s" % (k, params[k]) for k in params.keys()])

  • フォーマットの簡単な説明:文字列接続は接続、フォーマット、および強制タイプ変換
  • を実行します.
  • 比較文字列接続のフォーマット
    >>> pwd = "secret"
    >>> print pwd + "is the first"     #     
    secretis the first
    >>> print "%s is the test" % (pwd,)    #      
    secret is the test
    >>> userCount = 6
    >>> print "%d" % (userCount,)
    6
    >>> print "Users connected: " + userCount   #            #    
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: cannot concatenate 'str' and 'int' objects


  • マッピングリストMapping lists
  • リストの各要素に関数を適用してデータを変換
    ["%s=%s" % (k, params[k]) for k in params.keys()]
    #     params keys  ,           

  • リストマッピングの概要
    >>> li=[2,4,6,8]
    >>> [elem*2 for elem in li]   #python            ,        ,           elem,  elem*2,              
    [4, 8, 12, 16]
    >>> li                         #             
    [2, 4, 6, 8]

  • buildConnectionsStringでのリストマッピング手順
    >>> params={"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"}
    >>> [k for k in params.keys()]    #          ,                    ,  params,keys().
    ['pwd', 'database', 'uid', 'server']  
    >>> [params[k] for k in params.keys()]  #       ,    params[k],  k         ,                      ,  params.values()。
    ['secret', 'master', 'sa', 'mpilgrim']
    >>> ["%s=%s" % (k, params[k]) for k in params.keys()] #       ,        。
    ['pwd=secret', 'database=master', 'uid=sa', 'server=mpilgrim']

  • Keys関数
  • >>> params = {"shi":"shang", "zhu":"xing", "shi":"qiang"}
    >>> params.keys()  #          ,             ,  #     ,       ,           ,            #      
    ['shi', 'zhu']


  • 接続リストと分割文字列
  • 接続リストは、Key=valueのキー値列を単一の文字列に接続し、任意の文字列リストを単一の文字列に接続し、文字列オブジェクトの方法joinを使用する必要があります.
  • 関数はオブジェクトであり、文字列自体もオブジェクトであり、この例では「;」呼び出しjoinメソッド
    return ";".join(["%s=%s" % (k, params[k]) for k in params.keys()])  #join         

  • 文字列を分割し、文字列をリストに分割する
    >>> params={"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"}
    >>> s = ";".join(params)
    >>> s
    'pwd;database;uid;server'
    >>> s.split(":")
    ['pwd;database;uid;server']
    >>> s.split(";")
    ['pwd', 'database', 'uid', 'server']
    >>> s.split(";", 1)           #                 ;        ,                   ,  
    ['pwd', 'database;uid;server']


  • まとめ
  • odbchelper.pyのコードと出力
     1 def buildConnectionString(params):
     2     """Build a connection string from a dictionary of parameters.
     3 
     4     Returns string."""
     5     return ";".join(["%s=%s" % (k, params[k]) for k in params.keys()])
     6 
     7 if __name__ == "__main__":
     8     myParams = {"server":"mpilgrim", \
     9                 "database":"master", \
    10                 "uid":"sa", \
    11                 "pwd":"secret" \
    12                 }
    13     print buildConnectionString(myParams)
    14 
    15 #
    16 server=mpilgrim;uid=sa;database=master;pwd=secret

  • 自己完了作業
  • 試験式shell
  • に合格
  • pythonモジュール
  • を記述する
  • モジュールのインポートおよび呼び出し関数
  • 関数を宣言し、ドキュメント文字列、ローカル変数、および適切なインデント
  • を使用します.
  • 定義辞書、リスト、およびシーケンス
  • 文字列、リスト、辞書、関数、モジュールなど、任意のオブジェクトにアクセスするプロパティと方法??
  • 文字列フォーマット接続値
  • マッピングリストは、他のリスト
  • となる.
  • は文字列を分割し、切断リストは文字列
  • である.


    本文まとめノート参考自:dive in to python