文と構文

8224 ワード

文の概要
  • すべてのpython複合文は同じ一般的な形式を持っている.すなわち、最初の行はコロンで終わり、最初の行と次の行がネストされたコードは統一的にインデントされ、ifの判断条件のような括弧はオプションであり、行の終了はエンベロープで終わる必要はなく、インデントの終了はコードブロックの終了である.pythonで唯一エンベロープを使用する必要がある場合は、1行に複数の文を配置し、エンベロープを区切り文字として使用します.()、[]、{}を使用すると、1つの文を複数の行にまたがることができます.単純な単行文は、複合文のコロンの後に直接続くことができます.

  • 割り当て、式、印刷
  • 賦値文複製オブジェクト
  • ではなくオブジェクト参照値を確立する.
    >>> v = v1 = []
    >>> v.append(1)
    >>> v, v1
    ([1], [1])
    

    えんざん
    説明する
    結果v = 1
    きほんけいしきv = 1 v, v1 = 1, 2
    メタグループわりあてえんざんv = 1, v1 = 2 [v, v1] = [1, 2]
    リストわりあてえんざんv = 1, v1 = 2 v, v1 = '12'
    シーケンス代入演算v = '1', v1 = '2' v, *v1 = 'abcd'
    拡張シーケンスのパケット解除v = 'a', v1 = ['b', 'c', 'd'] v = v1 = 1
    たもくてきわりあてえんざんv = 1, v1 = 1 v = 1 v += 1
    拡張代入演算v = 2
    >>> v, *v1 = 'a'
    >>> v, v1
    ('a', [])
    >>> v, *v1 = 'ab'
    >>> v, v1
    ('a', ['b'])       #               
    
    >>> v = 1; v1 = 2
    >>> v, v1 = v1, v  #             
    >>> v, v1
    (2, 1)
    
    >>> (v, v1), v2 = [(1, 2), 3]
    >>> v, v1, v2
    (1, 2, 3)
    
    >>> v, *v1, v2 = "Hello Python"
    >>> v, v1, v2
    ('H', ['e', 'l', 'l', 'o', ' ', 'P', 'y', 't', 'h', 'o'], 'n')
    
    >>> v = [1, 2, 3]
    >>> while v:
        f, v = v[0], v[1:]
        print(f, ',', v)
    
    1 , [2, 3]
    2 , [3]
    3 , []
    
    >>> v = [1, 2, 3]
    >>> while v:
        f, *v = v
        print(f, ',', v)
    
    1 , [2, 3]
    2 , [3]
    3 , []
    
    >>> v = []
    >>> v1 = v
    >>> v += [1]
    >>> v, v1
    ([1], [1])
    
    >>> v = []
    >>> v1 = v
    >>> v = v + [1]
    >>> v, v1
    ([1], [])
    
  • リザーブ
  • False class finally is return None continue for lambda try True def from nonlocal while and del global not with as elif if or yield assert else import pass break except in raise
    >>> help(print)
    Help on built-in function print in module builtins:
    
    print(...)
        print(value, ..., sep=' ', end='
    ', file=sys.stdout, flush=False) Prints the values to a stream, or to sys.stdout by default. Optional keyword arguments: file: a file-like object (stream); defaults to the current sys.stdout. sep: string inserted between values, default a space. end: string appended after the last value, default a newline. flush: whether to forcibly flush the stream.

    ifテストと構文規則
  • ifの後には、1つまたは複数のオプションのelifが続く、最終的なelseブロック
  • が続く.
    >>> if True:
        pass
    elif True:
        pass
    else:
        pass
    
    
  • 任意のゼロ以外または空以外のオブジェクトが真の数値ゼロ、空のオブジェクト、およびNoneが偽の比較および等しいテストの再帰的な適用データ構造内の比較および等しいテストはTrueまたはFalse andおよびorが真または偽の操作オブジェクト
  • を返す.
    #python              、     
    >>> [1, 2][bool(True)]
    2
    >>> [1, 2][bool(False)]
    1
    

    whileとforサイクル
  • while構文
  • >>> v = [1, 2]
    >>> while v:
        f, *v = v
        print(f, v)
    else:
        print('done')  #              (   break)
    
    
    1 [2]
    2 []
    done
    
  • の3つの連続点番号はpassの代替案とすることができる:if True:...
  • >>> v = ...
    >>> if v:
        print('Hello')
    
    
    Hello
    
  • pythonでは、文は式
  • として機能しません.
    >>> while v = 1:
        
    SyntaxError: invalid syntax
    
  • for構文
  • >>> v = [1, 2]
    >>> for x in v:
        print(x)
    else:
        print('   break')#              (   break)
    
        
    1
    2
       break
    
  • では、どのシーケンスもforループをサポートしていることが明らかになった.forループは、ファイルおよび辞書
  • にも使用可能である
    >>> v = {'a' : 1, 'b' : 2}
    >>> for k in v:
        print(v[k])
    
        
    2
    1
    
    >>> fp = open(r'D:\1.txt', 'w')
    >>> fp.write('abc')
    3
    >>> fp.close()
    >>> fp = open(r'D:\1.txt')
    >>> for x in fp:
        print(x)
    
        
    abc
    
  • range
  • >>> list(range(0, 5))
    [0, 1, 2, 3, 4]
    >>> list(range(3, 10, 2))
    [3, 5, 7, 9]
    >>> list(range(5, -5, -1))
    [5, 4, 3, 2, 1, 0, -1, -2, -3, -4]
    
  • zipは、1つ以上のシーケンスを取得し、メタグループのリストに戻り、これらのシーケンスの並べ替えられた要素をペアにし、
  • を最短シーケンス長で切断する.
    >>> list(zip('szn', '1234'))
    [('s', '1'), ('z', '2'), ('n', '3')]
    >>> list(zip('ABC', '1234', ('a', 'b', 'c')))
    [('A', '1', 'a'), ('B', '2', 'b'), ('C', '3', 'c')]
    
    >>> v = {}
    >>> v0 = ['a', 'b']
    >>> v1 = "szn"
    >>> for x, y in zip(v0, v1):v[x] = y
    
    >>> v
    {'b': 'z', 'a': 's'}
    
  • enumerateは、ジェネレータオブジェクトを返し、反復するたびに(index,value)メタグループ
  • を返す.
    >>> v = enumerate('szn')
    >>> next(v)
    (0, 's')
    >>> next(v)
    (1, 'z')
    >>> next(v)
    (2, 'n')
    >>> next(v)
    Traceback (most recent call last):
      File "", line 1, in 
        next(v)
    StopIteration
    
    >>> for x, y in enumerate('szn'):
        print(x, y)
    
        
    0 s
    1 z
    2 n
    

    反復と解析の第1部
  • __next__メソッドのあるオブジェクトは次の結果に進むが、一連の末尾ではStopIteration異常
  • を引き起こす.
  • python3.0はnext内蔵関数を提供し、オブジェクトの__next__メソッド
  • を自動的に呼び出す.
  • ファイルにとって、ファイルオブジェクトは独自の反復器であり、反復するたびに1行を返します.リストおよび多くの組み込みオブジェクトは、反復
  • を開始するためにiterを呼び出す必要があるため、反復を複数回開くことをサポートしているため、独自の反復ではありません.
  • ディクショナリの反復器は、次のキー
  • を自動的に返します.
    >>> v = "szn"
    >>> it = iter(v)
    >>> while True:   #    
        try:
            print(it.__next__())
        except StopIteration:
            print('done')
            break
    
        
    s
    z
    n
    done
    
    >>> v = "szn"
    >>> for x in v:    #    
        print(x)
    
        
    s
    z
    n
    
    >>> fp = open(r'D:\1.txt', 'rb')
    >>> str = fp.read()
    >>> str
    b'abc\r
    123' >>> fp = open(r'D:\1.txt') >>> for line in fp: # for __next__ print(line, end = '') abc 123 >>> d = {'a' : 'b', 1 : 2} >>> for k in d: print(k, d[k]) 1 2 a b

    ドキュメント
  • pythonは、オブジェクトに自動的に添付されたドキュメントをサポートし、実行時に表示を保存することもできます.文法的に見ると、このような注釈は文字列として書かれており、モジュールファイル、関数、およびクラス文の先頭に置かれ、実行可能なプログラムコードの前に置かれています(#注釈はその前でも構いません).pythonは、この文字列、すなわち、いわゆるドキュメント文字列を自動的にカプセル化し、オブジェクトの__doc__属性
  • とする.
    >>> def Fun():
        '''
        Print Hello World
        '''
        print('Hello World')
    
        
    >>> Fun.__doc__
    '
    \tPrint Hello World
    \t' >>> class CTest: 'CTest' pass >>> CTest.__doc__ 'CTest' >>> import sys >>> sys.path.append(r'D:') >>> import Test Hello >>> Test.__doc__ '1.py' >>> fp = open(r'D:\Test.py', 'rb') >>> for line in fp: print(line) b"'1.py'\r
    " b'\r
    ' b"print('Hello')"