『Pythonコアプログラミング』読書ノート(一)


このブログには、初めてPythonを学んだことを記しています.以下のノートは、「Pythonコアプログラミング(第2版)」を学んだ読書ノートから来ています.
Pythonベース:
  • 文字列:mysString='Hello world'
  • print:文呼び出しstr()関数表示オブジェクト、インタラクティブ解釈器呼び出しrepr()関数表示オブジェクト
    print:“%s is number%d”%(“Python”,1)#“与”は、出力をファイルにリダイレクトすることをサポートします.
              :
        import sys
        print >> sys.stderr, 'Fatal error...'
            :
        logfile = open('/tmp/mylog.txt', 'a')
        print >> logfile, 'Fatal error:...'
        logfile.close()
    

  • デフォルトでは、各行に改行を付けます.最後にカンマを付けると、改行せずに自動的にスペースを付けることができます.
    3._ 最後の式の値を表す下線
    4.raw_input():標準入力を読み出し、指定した変数に読み出したデータを割り当てます.
    >>> user = raw_input('Enter login name:')
    Enter login name:   #      

    int()関数を使用して、ユーザーが入力した文字列を整数に変換できます.
    5.コメント:1行が終わるまで#からコメント6.論理オペレータ:and or not 7.変数:
    Python       ,           。
         、          。
           1    1   (++、--)
    

    8.ブール値:True、False
          ,       ,True 1 False 0
    

    9.if文:
    if expression:
        ...
    elif expression2:
        ...
    else:
        ...

    10 forサイクル:
    for item in ['e-mail', 'homework']:
        ...

    in後はrange():
     1.  len()          :
    
    for i in range(len(foo)):
        print foo[i]
     2.        ,     :
             eg: range(3): [0, 1, 2]
     3. range(start, end, step):    start,   stop-1
    
    range(end)  #start:   0,step:    1
    range(start, end)   #step:1

    リスト解析:squared=[x**2 for x in range(4)]
    11ファイル関数:
    fobj = open(filename, 'r')  #r:access_mode:     w, a(  ), +(  ), b(     )
    for eachLine in fobj:
        print eachLine,
    fobj.close()

    12エラーと例外:
    try:
        ...
    except IOError, e:  #EOFError:^D  EOF  ,KeyboardInterrupt:^C      error
        ... # str(e)
    else:
        ...

    13関数:
    def addMe2Me(x):
        "..."     #  
        ...
        return ...

    デフォルト値は次のとおりです.
    def foo(debug = True):
        ... #     ,   foo()  ,   debug True
            #    foo(False)  ,    False

    14モジュール:
    import module_name
    
    # eg:
    import sys
    sys.stdout.write('Hello world:
    '
    )
    int(obj)            
    str(obj)              
    repr(obj)              
    type(obj)          (        type  ,         )
        \      
    cmp(obj1, obj2)    obj1,obj2,          i(i < 0:obj1 < obj2)
    

    へんすうわりあて
    レプリケーションは、変数に直接値を割り当てるのではなく、オブジェクトが参照によって渡され、そのオブジェクトの参照(値ではない)が変数に割り当てられます.
  • 中間変数を必要とせず、2つの変数の値を交換できます:
  • x, y = y, x

    参照カウント:オブジェクトが作成されると、参照カウントが作成されます(1に設定).このオブジェクトが不要になり、参照カウントが0になった場合、ゴミは回収されます.
    x = 3.14        # x ——> 3.14
    y = x           #3.14    ,    +1(=2), y --> 3.14
    
    #          (      ):
    foobar(x)       #    +1
    
    #            ,        -1:
    x = 4       # 3.14     -1
    
    #           ,   ID    :eg
    aList[2] = ...
    aList.append('abc')

    del:変数を削除する
    注意:トレースまたはデバッガは、オブジェクトの回収時間を遅らせる追加の参照をオブジェクトに追加します.ごみ収集器:
          ,      ,          0   
    

    Pythonオブジェクト
    Pythonオブジェクトの3つの特性:
      :      id()  ,               
      :      type()       
     :        
    

    NULLオブジェクト:値None、ブール値は常にFalse
    コードオブジェクト:コンパイルされたPythonソースクリップ、実行可能オブジェクトは組み込み関数compile()によってコードオブジェクトを得ることができます->execコマンドまたはeval()組み込み関数によって実行できます
    フレームオブジェクト:Pythonインタプリタの実行時に必要なall情報を含むフレームオブジェクトに使用される->記録オブジェクトの追跡
    スライスオブジェクト:
        :sequence[start1:end1, start2:end2] 
            /   :sequence[..., start1:end1]
        :sequence[    :    :   ]
    

    オブジェクトの比較:
    foo1 = 4.3
    foo2 = 1.3 + 3.0 #foo1,foo2       

    2つの変数が同じオブジェクトを指すかどうかをisとis notでテストします.
    a is b
         id(a) == id(b)
    

    整数型オブジェクト、文字列オブジェクトは可変オブジェクトso Pythonは効率的にそれらをキャッシュすることができますPython**は単純な整数型のみをキャッシュし、デフォルトのキャッシュの整数型範囲:(-1100)
    数値
    Python標準整型はCの(記号付き)長整型に等しく、整型は一般的に10進数で表される(8進数はOで始まり、16進数は0 xで始まる).
    aComplex.real
    aComplex.imag
    aComplex.conjugate() #          

    床除://小数部を切り捨てるビットオペレータ(整型にのみ適)ビットと&または|異或^取反~左シフト<<右シフト>>
    abs(num)                    #  num    
    coerce(num1, num2)          # num1、num2       ,          
    divmod(num1, num2)          #     (num1/num2, num1%num2)
    pow(num1, num2, mod = 1)    # num1 num2  ,   mod,    
    round(flt, ndig = 1)        #      flt,        ,  ndig   
    
    hex(num)    #           ,         
    oct(num)    #..........   ....................
    chr(num)    #         (0<= num <= 255),   ACSII   
    ord(num)    #     ,        

    シーケンス:文字列、リスト、元祖
    ≪シーケンス|Sequence|oem_src≫:1つまたは複数のメンバーに下付きオフセットでアクセスできます.
    シーケンス(汎用)
    リレーショナルオペレータ:in、not inは、要素がシーケンスに属しているかどうかを判断します.
    接続オペレータ:+推奨リストextend()で2つのリストオブジェクトをマージ
    繰り返しオペレータ:*
    sequence * copies_int   #copies_int:  。                 

    スライスオペレータ:[],[:],[::::]負のインデックス:範囲-1(シーケンスの終了を起点とする)からシーケンスの負の長さ(-len(sequence))
    タイプ変換:
    list(iter)                      
    str(obj)              obj        
    tuple(iter)                         
    

    組み込み関数:
    len(seq)
    max(iter)
    min(iter)
    reversed(seq)
    sorted(iter)
    enumerate(iter)    iter     index  item      :
    
    for i,t in enumerate(s):
        print i, t
    
    #  :
    0 f
    1 ...
    2 ...
    

    文字列
    一重引用符’’’二重引用符”は同じ役割を果たします(Pythonには文字がないので)
               ,   ,         :
    eg:' ''str[2:4]'' '     
     !!!           !     
    

    可変タイプ:文字列の要素を変更するには、新しい文字列を作成する必要があります.
    aString = 'abcd'
    len(aString)       # =4
    
    # aString[2:4]  ,   aString[4]  

    raw_Input():PythonはC言語の終了文字NULLがなく、何文字を入力するとlen()がいくら返されますか
    三重引用符:''''は、文字列が複数行にまたがることを可能にし、文字列には改行、タブ、その他の特殊文字を含めることができます.eg:
    >>> hi = '''hi #      WYSIWYG ...there'''
    >>>hi               #repr()
    'hi
    there'
    >>>print hi #str() hi there

    不変性:
    >>>s[2] = 'C'   #  ,                  :
    >>> s = '%sC%s' % (s[0:2],s[3:])   

    リスト#リスト#
    任意の数のPythonオブジェクトを保持できる柔軟なコンテナリストには、異なるタイプのオブジェクトが含まれます.
    >>>aList = [123, 'abc', ['inner', 'list'], 4.56]     #   '',    ''
    
    >>>aList[3][1]
    'list'
    
    >>>list('foo')
    ['f', 'o', 'o']
    

    リストの更新:
    >>>aList.append("hi, world")

    削除:
    >>>del aList[1]
    >>>aList.remove(123)

    +:2つのリストを結合(新規リスト)->extendメソッド:新しいリストを元のリストに追加
    List.index(obj)はlist[k]==objのk値を返す
      index()  ,    in、not in       ,     obj  index  
    

    list.insert(index,obj)インデックス量indexの位置にオブジェクトobjを挿入する
    可変オブジェクトが可変オブジェクトに値する方法:戻り値がありません!<->文字列:可変ではなく、soは必ず新しいオブジェクトを返します.
    aList.pop()リストの最後の要素を弾き出す.Pop(0):リストの最初の要素を弾き出す
    メタグループ
    メタグループ:カッコ()リスト:四角カッコ[]メタグループ(可変タイプ)は辞書のkeyとして使用できます.Hashアルゴリズムで得られた値は常に1つの値である
     :         :            (,) ->             
    eg:
    
    >>>['abc']            >>>('xyz')          >>>('xyz',)
    ['abc']               'xyz'               ('xyz',)
    
    >>>type(['abc'])      >>>type(...)        >>>type(...)
    <type 'list'>         <type 'str'>        <type 'tuple'>

    リスト()でリストに変換できます
    タプルの可変:
    >>>t = (['xyz', 123], 23, -103.4)
    >>>t[0][1] = ['abc','def']
    >>>t
    (['xyz', ['abc','def']], 23, -103.4)

    マッピングタイプ:ディクショナリ
    辞書(可変):Python言語で唯一のマッピングタイプ.マッピングタイプオブジェクト:ハッシュ値(キー、key)、指向オブジェクト(値、value)
        :        (              )
        :           (   :   )
    
    >>>dict2 = {'name':'earth', 'port':80}

    またはdict()を使用して辞書を作成できます.
    >>> fdict = dict((['x',1], ['y', 2]))
    >>> fdict
    {'y':2, 'x':1}

    辞書の値にアクセスするには、次の手順に従います.
    >>>for key in dict2.keys():
    # or: in dict2
    ...     print 'key = %s, value = %s' % (key, dict2[key])
    >>>dict2['name']
    'earth'

    辞書にキーがあるかどうかを確認します:in、not in
     :       !——>    ——>  、     ,  、    
    

    辞書の更新:
    >>>dict2['name'] = 'venus'       #             
                                     #          
    >>>print 'host %(name)s is running on port %(port)d' %dict2
    host venus is running on port 80                            

    ディクショナリ要素の削除:del dict 2['name']
    len()は、すべての要素(キー値ペア)の数を返します.
    組み込み方法:
    >>>dict2.keys()        #     ,     all  
    ['port', 'name']
    
    >>>dict2.values()      #     ,     all  
    [80, 'earth']
    
    >>>dict2.items()      #     ,     ( , )     
    [('port',80), ('name','earth')]

    dict.update(dict 2):ディクショナリdict 2のキー値ペアをディクショナリdict.get(key,default=None)に追加すると、ディクショナリ内のkeyに対応する値が返され、キーキーキーが存在しない場合はdefaultの値が返されます(デフォルトはNone).
    値:ハッシュ可能でなければなりません
                。eg:1.0 1       ——>