pytho****@googl*****
pytho****@googl*****
2011年 3月 5日 (土) 01:51:07 JST
Revision: 9393cd2047 Author: INADA Naoki <inada****@klab*****> Date: Fri Mar 4 08:49:59 2011 Log: レビュー: tutorial/controlflow.rst http://code.google.com/p/python-doc-ja/source/detail?r=9393cd2047 Modified: /tutorial/controlflow.rst ======================================= --- /tutorial/controlflow.rst Sat Feb 26 03:11:54 2011 +++ /tutorial/controlflow.rst Fri Mar 4 08:49:59 2011 @@ -4,8 +4,8 @@ その他の制御フローツール ************************ -今しがた紹介した :keyword:`while` 文の他に、Python -では他の言語でおなじみの普通の制御フロー文を備えていますが、これらには多少 ひねりを加えてあります。 +先ほど紹介した :keyword:`while` 文の他にも、 Python +は他の言語でおなじみの制御フロー文を備えていますが、これらには多少ひねりを 加えてあります。 .. _tut-if: @@ -62,9 +62,11 @@ window 6 defenestrate 12 -反復操作の対象になっているシーケンスをループので書き換える操作 (リストのよ うな、変更可能 (mutable) なシーケンス型でおきます) は、安全 -ではありません。もし反復処理を行う対象とするリスト型を変更したいのなら、 (対象の要素を複製するなどして) コピーに対して反復を行わなければ -なりません。この操作にはスライス表記を使うと特に便利です: +反復操作の対象になっているシーケンスをループの中で書き換える操作 +(リストのような、変更可能 (mutable) なシーケンス型でおきます) は、 +安全ではありません。もし反復処理を行う対象とするリスト型を変更したいのな ら、 +(対象の要素を複製するなどして) コピーに対して反復を行わなければ +なりません。この操作にはスライス表記を使うと特に便利です。 :: @@ -80,8 +82,8 @@ :func:`range` 関数 ================== -数列にわたって反復を行う必要がある場合、組み込み関数 :func:`range` が便利 です。この関数は算術型の数列が入ったリストを生成します。 - +数列にわたって反復を行う必要がある場合、組み込み関数 :func:`range` が便利 です。 +この関数は算術型の数列が入ったリストを生成します。 :: @@ -90,8 +92,7 @@ 指定した終端値は生成されるリストには入りません。 ``range(10)`` は 10 個の値 からなるリストを生成し、長さ 10 のシーケンスにおける各項目のインデクスとなります。 range を別の数から開始し たり、他の増加量 (負の増加量でさえも; 増加量は時に -'ステップ(step)' と呼ばれることもあります) を指定することもできます: - +'ステップ(step)' と呼ばれることもあります) を指定することもできます。 :: @@ -102,8 +103,7 @@ >>> range(-10, -100, -30) [-10, -40, -70] -あるシーケンスにわたってインデクスで反復を行うには、 :func:`range` と :func:`len` を次のように組み合わせられます: - +あるシーケンスにわたってインデクスで反復を行うには、 :func:`range` と :func:`len` を次のように組み合わせられます。 :: @@ -129,14 +129,13 @@ :keyword:`break` 文は、C 言語と同じく、最も内側の :keyword:`for` また は :keyword:`while` ループを中断します。 - :keyword:`continue` 文は、これもまた C 言語から借りてきたものですが、ループ を次の反復処理に飛ばします。 - -ループ文は :keyword:`else` 節を持つことができます; :keyword:`else` 節は、 (:keyword:`for` で) -反復処理対象のリストを使い切ってループが終了したとき、または (:keyword:`while` で) 条件が偽になったときに実行されますが、 -:keyword:`break` 文でループが終了したときは実行されません。この動作を、素数 を探す下記のループを例にとって示します: - +ループ文は :keyword:`else` 節を持つことができます。 +:keyword:`else` 節は、 (:keyword:`for` で) 反復処理対象のリストを使い切って +ループが終了したとき、または (:keyword:`while` で) 条件が偽になったときに実 行されますが、 +:keyword:`break` 文でループが終了したときは実行されません。 +この動作を、素数を探す下記のループを例にとって示します。 :: @@ -170,10 +169,10 @@ :: >>> while True: - ... pass # キーボード割り込み (keyboard interrupt, Ctrl+C) を busy-wait で待つ + ... pass # キーボード割り込み (keyboard interrupt, Ctrl+C) をビジー ウェイトする。 ... -これは最小のクラスを作るときによく使われる方法です:: +これは最小のクラスを作るときによく使われる方法です。 :: >>> class MyEmptyClass: ... pass @@ -181,7 +180,7 @@ :keyword:`pass` が使われるもう1つの場所は、新しいコードを書いている時の関数 や条件文の中身です。 こうすることで、具体的なコードを書かないで抽象的なレベルで考えることができ ます。 -:keyword:`pass` は何もすることなく無視されます:: +:keyword:`pass` は何もすることなく無視されます。 :: >>> def initlog(*args): ... pass # 忘れずにここを実装すること! @@ -192,7 +191,7 @@ 関数を定義する ============== -フィボナッチ数列 (Fibonacci series) を任意の上限値まで書き出すような関数を 作成できます: +フィボナッチ数列 (Fibonacci series) を任意の上限値まで書き出すような関数を 作成できます。 :: @@ -212,33 +211,39 @@ single: docstrings single: strings, documentation -:keyword:`def` は関数の *定義 (definition)* を導くキーワードで す。 :keyword:`def` の後には、関数名と仮引数 -(formal parameter) を丸括弧で囲んだリストを続けなければなりません。関数の実 体を -校正する実行文は次の行から始め、インデントされていなければなりません。 +:keyword:`def` は関数の *定義 (definition)* を導くキーワードです。 +:keyword:`def` の後には、関数名と仮引数を丸括弧で囲んだリストを続けなければ なりません。 +関数の実体を構成する実行文は次の行から始め、インデントされていなければなり ません。 関数の本体の記述する文の最初の行は文字列リテラルにすることもできます。 -その場合、この文字列は関数のドキュメンテーション文字列 (documentation string)、または :dfn:`docstring` と呼ばれます。 (docstring について は :ref:`tut-docstrings` でさらに扱っています。) -ドキュメンテーション文字列を使ったツールには、オンライン文書や印刷文書を自 動的に生成したり、ユーザが対話的にコードを閲覧できるようにするものがありま す; +その場合、この文字列は関数のドキュメンテーション文字列 (documentation string)、 +または :dfn:`docstring` と呼ばれます。 (docstring について は :ref:`tut-docstrings` でさらに扱っています。) +ドキュメンテーション文字列を使ったツールには、オンライン文書や印刷文書を自 動的に生成したり、 +ユーザが対話的にコードから直接閲覧できるようにするものがあります。 自分が書くコードにドキュメンテーション文字列を入れるのはよい習慣です。書く 癖をつけてください。 - 関数を *実行 (execution)* するとき、関数のローカル変数のために使われる新た なシンボルテーブル (symbol table) が用意されます。 もっと正確にいうと、関数内で変数への代入を行うと、その値はすべてこのローカ ルなシンボルテーブルに記憶されます。 -一方、変数の参照を行うと、まずローカルなシンボルテーブルが検索され、次にさ らに外側の関数 [#]_ のローカルなシンボルテーブルを検索し、その後グローバルな シンボルテーブルを調べ、最後に組み込みの名前テーブルを調べます。 -従って、関数の中では、グローバルな変数を参照することはできますが、直接値を 代入することは (:keyword:`global` 文で名前を挙げておかない限り) -できません。 - -関数を呼び出す際の実際のパラメタ (引数) は、関数が呼び出されるときに関数の ローカルなシンボルテーブル内に取り込まれます; そうすることで、引数は -*値渡し (call by value)* で関数に渡されることになります (ここでの *値 (value)* とは常にオブジェクトへの *参照 -(reference)* をいい、オブジェクトの値そのものではありません) [#]_ 。ある関 数がほかの関数を呼び出すときには、新たな呼び出しのために -ローカルなシンボルテーブルが新たに作成されます。 - - -関数の定義を行うと、関数名は現在のシンボルテーブル内に取り入れられます。関 数名の値は、インタプリタからはユーザ定義関数 (user-defined -function) として認識される型を持ちます。この値は別の名前に代入して、その名 前を後に関数として使うこともできます。 +一方、変数の参照を行うと、まずローカルなシンボルテーブルが検索され、次にさ らに +外側の関数 [#]_ のローカルなシンボルテーブルを検索し、その後グローバルな +シンボルテーブルを調べ、最後に組み込みの名前テーブルを調べます。 +従って、関数の中では、グローバルな変数を参照することはできますが、直接値を +代入することは (:keyword:`global` 文で名前を挙げておかない限り)できません。 + +関数を呼び出す際の実際のパラメタ (引数) は、関数が呼び出されるときに関数の +ローカルなシンボルテーブル内に取り込まれます。 +そうすることで、引数は *値渡し (call by value)* で関数に渡されることになり ます +(ここでの *値 (value)* とは常にオブジェクトへの *参照(reference)* をいい、 +オブジェクトの値そのものではありません) [#]_ 。 +ある関数がほかの関数を呼び出すときには、新たな呼び出しのためにローカルな +シンボルテーブルが新たに作成されます。 + +関数の定義を行うと、関数名は現在のシンボルテーブル内に取り入れられます。 +関数名の値は、インタプリタからはユーザ定義関数 (user-defined function) +として認識される型を持ちます。この値は別の名前に代入して、後にその名前を +関数として使うこともできます。 これは一般的な名前変更のメカニズムとして働きます。 - :: >>> fib @@ -248,10 +253,10 @@ 0 1 1 2 3 5 8 13 21 34 55 89 他の言語出身の人からは、 ``fib`` は値を返さないので関数ではなく手続き (procedure) だと異論があるかもしれませんね。 -技術的に言えば、実際には手続きもややつまらない値ですが値を返しています。こ の値は ``None`` と呼ばれます +技術的に言えば、実際には :keyword:`return` 文を持たない関数もややつまらない +値ですが値を返しています。この値は ``None`` と呼ばれます (これは組み込みの名前です)。 ``None`` だけを書き出そうとすると、インタプリ タは通常出力を抑制します。 -本当に出力したいのなら、以下のように :keyword:`print` を使うと見ることがで きます: - +本当に出力したいのなら、以下のように :keyword:`print` を使うと見ることがで きます。 :: @@ -259,8 +264,7 @@ >>> print fib(0) None -フィボナッチ数列の数からなるリストを出力する代わりに、値を返すような関数を 書くのは簡単です: - +フィボナッチ数列の数からなるリストを出力する代わりに、値を返すような関数を 書くのは簡単です。 :: @@ -277,8 +281,7 @@ >>> f100 # 結果を出力する [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] -例によって、この例は Python の新しい機能を示しています: - +この例は Python の新しい機能を示しています。 * :keyword:`return` 文では、関数から一つ値を返します。 :keyword:`return` の 引数となる式がない場合、 ``None`` が返ります。関数が終了したときにも ``None`` が返ります。 @@ -307,8 +310,7 @@ ------------------ もっとも便利なのは、一つ以上の引数に対してデフォルトの値を指定する形式で す。この形式を使うと、定義されている引数より少ない個数の引数 -で呼び出せる関数を作成します: - +で呼び出せる関数を作成します。 :: @@ -324,7 +326,7 @@ raise IOError('refusenik user') print complaint -この関数はいくつかの方法で呼び出せます: +この関数はいくつかの方法で呼び出せます。 * 必須の引数のみ与える: ``ask_ok('Do you really want to quit?')`` @@ -338,7 +340,6 @@ デフォルト値は、関数が定義された時点で、関数を *定義している* 側のスコープ (scope) で評価されるので、 - :: i = 5 @@ -353,8 +354,7 @@ **重要な警告:** デフォルト値は 1 度だけしか評価されません。デフォルト値が リストや辞書のような変更可能なオブジェクトの時には -その影響がでます。例えば以下の関数は、後に続く関数呼び出しで関数に渡されて いる引数を累積します: - +その影響がでます。例えば以下の関数は、後に続く関数呼び出しで関数に渡されて いる引数を累積します。 :: @@ -368,7 +368,6 @@ このコードは、 - :: [1] @@ -377,8 +376,7 @@ を出力します。 -後続の関数呼び出しでデフォルト値を共有したくなければ、代わりに以下のように 関数を書くことができます: - +後続の関数呼び出しでデフォルト値を共有したくなければ、代わりに以下のように 関数を書くことができます。 :: @@ -394,8 +392,8 @@ キーワード引数 -------------- -関数を ``keyword = value`` という形式のキーワード引数を使って呼び出すことも できます。例えば、以下の関数: - +関数を ``keyword = value`` という形式のキーワード引数を使って呼び出すことも +できます。例えば、以下の関数は、 :: @@ -405,8 +403,7 @@ print "-- Lovely plumage, the", type print "-- It's", state, "!" -は、以下のいずれの方法でも呼び出せます: - +以下のいずれの方法でも呼び出せます。 :: @@ -415,8 +412,7 @@ parrot('a thousand', state = 'pushing up the daisies') parrot('a million', 'bereft of life', 'jump') -しかし、以下の呼び出しはすべて不正なものです: - +しかし、以下の呼び出しはすべて不正なものです。 :: @@ -425,10 +421,12 @@ parrot(110, voltage=220) # 引数に対して値が重複している parrot(actor='John Cleese') # 未知のキーワードを使用している -一般に、引数リストでは、固定引数 (positional argument) の後ろにキーワード引 数を置かねばならず、キーワードは仮引数名から選ばなければ -なりません。仮引数がデフォルト値を持っているかどうかは重要ではありません。 引数はいずれも一つ以上の値を受け取りません --- -同じ関数呼び出しの中では、固定引数に対応づけられた仮引数名をキーワードとし て使うことはできません。この制限のために実行が失敗する例を以下に示します。 - +一般に、引数リストでは、固定引数 (positional argument) の後ろにキーワード引 数を +置かねばならず、キーワードは仮引数名から選ばなければなりません。仮引数が +デフォルト値を持っているかどうかは重要ではありません。引数はいずれも一つ以 上の +値を受け取りません --- 同じ関数呼び出しの中では、固定引数に対応づけられた +仮引数名をキーワードとして使うことはできません。 +この制限のために実行が失敗する例を以下に示します。 :: @@ -440,11 +438,13 @@ File "<stdin>", line 1, in ? TypeError: function() got multiple values for keyword argument 'a' -仮引数の最後に ``**name`` の形式のものがあると、それまでの仮引数に対応した ものをのぞくすべてのキーワード引数が入った辞書 ( -:ref:`typesmapping` を参照) を受け取ります。 -``**name`` は ``*name`` の形式をとる、仮引数のリストを超えた固定引数の入っ たタプルを受け取る引数 (次の節で述べます) と組み合わせることができます。 (``*name`` は -``**name`` より前になければなりません)。例えば、ある関数の定義を以下: - +仮引数の最後に ``**name`` の形式のものがあると、それまでの仮引数に +対応したものを除くすべてのキーワード引数が入った辞書 (:ref:`typesmapping` +を参照) を受け取ります。 +``**name`` は ``*name`` の形式をとる、仮引数のリストを超えた位置指定引数の +入ったタプルを受け取る引数 (次の節で述べます) と組み合わせることができま す。 +(``*name`` は ``**name`` より前になければなりません)。 +例えば、ある関数の定義を以下のようにすると、 :: @@ -457,8 +457,7 @@ keys.sort() for kw in keys: print kw, ":", keywords[kw] -のようにすると、呼び出しは以下: - +呼び出しは以下のようになり、 :: @@ -468,8 +467,7 @@ client="John Cleese", sketch="Cheese Shop Sketch") -のようになり、もちろん以下のように出力されます: - +もちろん以下のように出力されます。 :: @@ -482,11 +480,11 @@ shopkeeper : Michael Palin sketch : Cheese Shop Sketch -キーワード引数名のリストに対して :meth:`sort` を呼び出した後に ``keywords`` 辞書の内容を出力していることに注意してください; +キーワード引数名のリストに対して :meth:`sort` を呼び出した後に ``keywords`` +辞書の内容を出力していることに注意してください。 :meth:`sort` が呼び出されていないと、引数が出力される順番は不確定となりま す。 - .. _tut-arbitraryargs: 任意引数リスト @@ -495,9 +493,10 @@ .. index:: statement: * -最後に、最も使うことの少ない選択肢として、関数が任意の個数の引数で呼び出せ るよう指定する方法があります。これらの引数はタプル (:ref:`tut-tuples` を参照 ) に -格納されます。可変個の引数の前に、ゼロ個かそれ以上の引数があっても構いませ ん。 - +最後に、最も使うことの少ない選択肢として、関数が任意の個数の引数で +呼び出せるよう指定する方法があります。 +これらの引数はタプル (:ref:`tut-tuples` を参照) に格納されます。 +可変個の引数の前に、ゼロ個かそれ以上の引数があっても構いません。 :: @@ -510,9 +509,12 @@ 引数リストのアンパック ---------------------- -引数がすでにリストやタプルになっていて、個別な固定引数を要求する関数呼び出 しに渡すためにアンパックする必要がある場合には、逆の状況が起こります。 -例えば、組み込み関数 :func:`range` は引数 *start* と *stop* を別に与える必 要があります。 -個別に引数を与えることができない場合、関数呼び出しを ``*`` 演算子を使って書 き、リストやタプルから引数をアンパックします。 +引数がすでにリストやタプルになっていて、個別な固定引数を要求する関数呼び出 しに +渡すためにアンパックする必要がある場合には、逆の状況が起こります。 +例えば、組み込み関数 :func:`range` は引数 *start* と *stop* +を別に与える必要があります。 +個別に引数を与えることができない場合、関数呼び出しを ``*`` 演算子を使って書 き、 +リストやタプルから引数をアンパックします。 :: @@ -525,7 +527,8 @@ .. index:: statement: ** -同じやりかたで、 ``**`` オペレータを使って辞書でもキーワード引数を渡すこと ができます。 +同じやりかたで、 ``**`` オペレータを使って辞書でもキーワード引数を +渡すことができます。 :: @@ -544,10 +547,15 @@ ラムダ式 --------- -多くの人の要望により、Lispのような関数型プログラミング言語によくあるいくつ かの機能が Python に加えられました。キーワード -:keyword:`lambda` を使うと、名前のない小さな関数を生成できます。例えば ``lambda a, b: a+b`` -は、二つの引数の和を返す関数です。ラムダ式(lambda form) は、関数オブジェク トが要求されている場所にならどこでも使うことができます。ラムダ式は、構文上単 一の式に制限されています。 -意味付け的には、ラムダ形式はただ通常の関数に構文的な糖衣をかぶせたものに過 ぎません。入れ子構造になった関数定義と同様、ラムダ式もそれを取り囲むスコープ から変数を参照することができます。 +多くの人の要望により、Lispのような関数型プログラミング言語によくあるいくつ かの +機能が Python に加えられました。 +キーワード :keyword:`lambda` を使うと、名前のない小さな関数を生成できます。 +例えば ``lambda a, b: a+b`` は、二つの引数の和を返す関数です。 +ラムダ式(lambda form) は、関数オブジェクトが要求されている場所にならどこで も +使うことができます。ラムダ式は、構文上単一の式に制限されています。 +意味付け的には、ラムダ形式はただ通常の関数に構文的な糖衣をかぶせたものに +過ぎません。入れ子構造になった関数定義と同様、ラムダ式もそれを取り囲む +スコープから変数を参照することができます。 :: @@ -573,26 +581,28 @@ ドキュメンテーション文字列については、その内容と書式に関する慣習ができつつ あります。 - -最初の行は、常に対象物の目的を短く簡潔にまとめたものでなくてはなりません。 簡潔に書くために、対象物の名前や型を明示する必要はありません。 -名前や型は他の方法でも得られるからです (名前がたまたま関数の演算内容を記述 する動詞である場合は例外です)。 +最初の行は、常に対象物の目的を短く簡潔にまとめたものでなくてはなりません。 +簡潔に書くために、対象物の名前や型を明示する必要はありません。 +名前や型は他の方法でも得られるからです (名前がたまたま関数の演算内容を記述 する +動詞である場合は例外です)。 最初の行は大文字で始まり、ピリオドで終わっていなければなりません。 - -ドキュメンテーション文字列中にさらに記述すべき行がある場合、二行目は空行に し、まとめの行と残りの記述部分を視覚的に分離 -します。つづく行は一つまたはそれ以上の段落で、対象物の呼び出し規約や副作用 について記述します。 - - -Python のパーザは複数行にわたる Python 文字列リテラルからインデントを剥ぎ取 らないので、ドキュメントを処理するツールでは必要に応じて -インデントを剥ぎ取らなければなりません。この処理は以下の規約に従って行いま す。最初の行の *後にある* 空行でない最初の行が、ドキュメント -全体のインデントの量を決めます。 (最初の行は通常、文字列を開始するクオート に隣り合っているので、インデントが文字列リテラル中に現れないためです。) -このインデント量と "等価な" 空白が、文字列のすべての行頭から剥ぎ取られま す。インデントの量が少ない行を書いてはならないの -ですが、もしそういう行があると、先頭の空白すべてが剥ぎ取られます。インデン トの空白の大きさが等しいかどうかは、タブ文字を (通常は 8 文字の -スペースとして) 展開した後に調べられます。 - - -以下に複数行のドキュメンテーション文字列の例を示します: - +ドキュメンテーション文字列中にさらに記述すべき行がある場合、二行目は空行に し、 +まとめの行と残りの記述部分を視覚的に分離します。 +つづく行は一つまたはそれ以上の段落で、対象物の呼び出し規約や副作用について 記述します。 + +Python のパーザは複数行にわたる Python 文字列リテラルからインデントを +剥ぎ取らないので、ドキュメントを処理するツールでは必要に応じてインデントを +剥ぎ取らなければなりません。 +この処理は以下の規約に従って行います。最初の行の *後にある* 空行でない最初 の行が、 +ドキュメント全体のインデントの量を決めます。 (最初の行は通常、文字列を開始 する +クオートに隣り合っているので、インデントが文字列リテラル中に現れないためで す。) +このインデント量と "等価な" 空白が、文字列のすべての行頭から剥ぎ取られま す。 +インデントの量が少ない行を書いてはならないのですが、もしそういう行がある と、 +先頭の空白すべてが剥ぎ取られます。インデントの空白の大きさが等しいかどうか は、 +タブ文字を (通常は 8 文字のスペースとして) 展開した後に調べられます。 + +以下に複数行のドキュメンテーション文字列の例を示します。 :: @@ -617,20 +627,29 @@ .. sectionauthor:: Georg Brandl <georg****@pytho*****> .. index:: pair: coding; style -これからより長くより複雑な Python のコードを書いていくので、そろそろ *コー ディングスタイル* について語っても良い頃です。 -ほとんどの言語は様々なスタイルで書け (もっと簡潔に言えば *フォーマットでき *)、スタイルによって読み易さが異なります。 -他人にとって読み易いコードにしようとするのはどんなときでも良い考えであり、 良いコーディングスタイルを採用することが非常に強力な助けになります。 - -Python には、ほとんどのプロジェクトが守っているスタイルガイドとし て :pep:`8` があります; それは非常に読み易く目に優しいコーディングスタイルを 推奨しています。 -全ての Python 開発者はある時点でそれを読むべきです; ここに最も重要な点を抜 き出しておきます: +これからより長くより複雑な Python のコードを書いていくので、そろそろ +*コーディングスタイル* について語っても良い頃です。 +ほとんどの言語は様々なスタイルで書け (もっと簡潔に言えば *フォーマットでき *)、 +スタイルによって読み易さが異なります。 +他人にとって読み易いコードにしようとするのはどんなときでも良い考えであり、 +良いコーディングスタイルを採用することが非常に強力な助けになります。 + +Python には、ほとんどのプロジェクトが守っているスタイルガイドとして +:pep:`8` があります。 +それは非常に読み易く目に優しいコーディングスタイルを推奨しています。 +全ての Python 開発者はある時点でそれを読むべきです。 +ここに最も重要な点を抜き出しておきます。 * インデントには空白 4 つを使い、タブは使わないこと。 - 空白 4 つは (深くネストできる) 小さいインデントと (読み易い) 大きいインデ ントのちょうど中間に当たります。タブは混乱させるので、使わずにおくのが良いで す。 + 空白 4 つは (深くネストできる) 小さいインデントと (読み易い) 大きい + インデントのちょうど中間に当たります。 + タブは混乱させるので、使わずにおくのが良いです。 * ソースコードの幅が 79 文字を越えないように行を折り返すこと。 - こうすることで小さいディスプレイを使っているユーザも読み易くなり、大きな ディスプレイではソースコードファイルを並べることもできるようになります。 + こうすることで小さいディスプレイを使っているユーザも読み易くなり、 + 大きなディスプレイではソースコードファイルを並べることもできるようになり ます。 * 関数やクラスや関数内の大きめのコードブロックの区切りに空行を使いなさい。 @@ -638,11 +657,16 @@ * docstring を使いなさい。 -* 演算子の前後とコンマの後には空白を入れ、括弧類のすぐ内側には空白を入れな いこと: ``a = f(1, 2) + g(3, 4)`` - -* クラスや関数に一貫性のある名前を付けなさい; 慣習では ``CamelCase`` をクラ ス名に使い、 ``lower_case_with_underscores`` を関数名やメソッド名に使いま す。常に ``self`` をメソッドの第 1 引数の名前 (クラスやメソッドについて は :ref:`tut-firstclasses` を見よ) として使いなさい。 - -* あなたのコードを世界中で使ってもらうつもりなら、風変りなエンコーディング は使わないこと。どんな場合でも ASCII が最も上手くいきます。 +* 演算子の前後とコンマの後には空白を入れ、括弧類のすぐ内側には + 空白を入れないこと: ``a = f(1, 2) + g(3, 4)`` + +* クラスや関数に一貫性のある名前を付けなさい。慣習では ``CamelCase`` + をクラス名に使い、 ``lower_case_with_underscores`` を関数名やメソッド名に + 使います。常に ``self`` をメソッドの第 1 引数の名前 + (クラスやメソッドについては :ref:`tut-firstclasses` を見よ) として使いな さい。 + +* あなたのコードを世界中で使ってもらうつもりなら、風変りなエンコーディング は + 使わないこと。どんな場合でも ASCII が最も上手くいきます。 .. rubric:: 脚注