pytho****@googl*****
pytho****@googl*****
2011年 5月 15日 (日) 11:03:08 JST
4 new revisions: Revision: af12851d6adf Author: Akihiro Uchida <uchid****@ike-d*****> Date: Sat May 14 18:32:21 2011 Log: 2.6.6: translate reference/datamodel.rst http://code.google.com/p/python-doc-ja/source/detail?r=af12851d6adf Revision: f919a8195caf Author: Akihiro Uchida <uchid****@ike-d*****> Date: Sat May 14 18:32:56 2011 Log: 2.6.6: translate reference/executionmodel.rst http://code.google.com/p/python-doc-ja/source/detail?r=f919a8195caf Revision: e1bb740de2cc Author: Akihiro Uchida <uchid****@ike-d*****> Date: Sat May 14 18:33:13 2011 Log: 2.6.6: translate reference/expressions.rst http://code.google.com/p/python-doc-ja/source/detail?r=e1bb740de2cc Revision: e06985711cc2 Author: Akihiro Uchida <uchid****@ike-d*****> Date: Sat May 14 18:33:33 2011 Log: 2.6.6: translate reference/simple_stmts.rst http://code.google.com/p/python-doc-ja/source/detail?r=e06985711cc2 ============================================================================== Revision: af12851d6adf Author: Akihiro Uchida <uchid****@ike-d*****> Date: Sat May 14 18:32:21 2011 Log: 2.6.6: translate reference/datamodel.rst http://code.google.com/p/python-doc-ja/source/detail?r=af12851d6adf Modified: /reference/datamodel.rst ======================================= --- /reference/datamodel.rst Sat Apr 23 06:15:14 2011 +++ /reference/datamodel.rst Sat May 14 18:32:21 2011 @@ -50,12 +50,14 @@ オブジェクトを明示的に破壊することはできません; しかし、オブジェクトに到達 不能 (unreachable) になると、ガベージコレクション (garbage-collection) によって処理されます。実装では、ごみ収集を遅らせたり、 全く行わないようにすることができます --- 到達可能なオブジェクトをごみ収集処理してしまわないかぎり、どう実装するかは 実装品質の問題です。 -(実装上の注意: 現在の CPython 実装では参照カウント -(reference-counting) 方式を使っており、(オプションとして) 循環参照を行って いるごみオブジェクトを -遅延検出します。この実装ではほとんどのオブジェクトを到達不能になると同時に 処理することができますが、循環参照を含むごみオブジェクトの収集が -確実に行われるよう保証しているわけではありません。循環参照を持つごみオブジ ェクト収集の制御については、 -:mod:`gc` モジュールを参照してください。 -CPython以外の実装は別の方式を使っており、CPythonも将来は別の方式を使うかも しれません。) + +.. impl-detail:: + + 現在の CPython 実装では参照カウント(reference-counting) 方式を使ってお り、(オプションとして) 循環参照を行っているごみオブジェクトを + 遅延検出します。この実装ではほとんどのオブジェクトを到達不能になると同時 に処理することができますが、循環参照を含むごみオブジェクトの収集が + 確実に行われるよう保証しているわけではありません。循環参照を持つごみオブ ジェクト収集の制御については、 + :mod:`gc` モジュールを参照してください。 + CPython以外の実装は別の方式を使っており、CPythonも将来は別の方式を使うか もしれません。 実装のトレース機能やデバッグ機能を使えば、通常は収集されてしまうようなオブ ジェクトを生かしておくことがあるので注意してください。また、 ':keyword:`try`...\ :keyword:`except`' 文を使って例外を捕捉できる @@ -309,7 +311,7 @@ 変更可能なシーケンスは、作成した後で変更することができます。変更可能 なシーケンスでは、添字表記やスライス表記を使って指定された要素に 代入を行うことができ、 :keyword:`del` (delete) 文を使って要素を削除す ることができます。 - Python に最初から組み込まれている変更可能なシーケンス型は、今のところ 一つだけです: + Python に最初から組み込まれている変更可能なシーケンス型は、今のところ 二つです: リスト型 (list) .. index:: object: list @@ -317,6 +319,14 @@ リストの要素は任意の Python オブジェクトにできます。リストは、角括 弧の中にカンマで区切られた式を並べて作ります。 (長さが 0 や 1 のシーケンスを作るために特殊な場合分けは必要ないことに注意してくだ さい。) + Byte Arrays + .. index:: bytearray + + bytearray オブジェクトは変更可能な配列です。 + 組み込みの :func:`bytearray` コンストラクタによって作成されます。 + 変更可能なことを除けば (つまりハッシュ化できない)、 byte array は + 変更不能な bytes オブジェクトと同じインターフェースと機能を提供し ます。 + .. index:: module: array 拡張モジュール :mod:`array` では、別の変更可能なシーケンス型を提供し ています。 @@ -1138,6 +1148,11 @@ 拡張比較メソッドの引数には型強制 (coerce) が起こりません。 + 単一の基本演算から順序付けするための演算を自動的に生成したい場合には、 + `Total Ordering recipe in the ASPN cookbook + <http://code.activestate.com/recipes/576529/>`_ を参照して下さい. + + .. method:: object.__cmp__(self, other) .. index:: @@ -1362,6 +1377,11 @@ A)`` でデスクリプタを呼び出します。 インスタンス束縛では、デスクリプタ呼び出しの優先順位はどのデスクリプタが定 義されているかに依存します。 +データデスクリプタは、 :meth:`__get__` と :meth:`__set__` 、 :meth:`__delete__` の任意の組合せを定義することができ ます。 +:meth:`__get__` が定義されない場合には、その属性にアクセスすると、そのオブ ジェクトのインスタンス辞書にその値がある場合を除けば、 +デスクリプタオブジェクト自身が返ってきます。 +デスクリプタが :meth:`__set__` と :meth:`__delete__` またはそのどちらかを定 義していれば、 +データデスクリプタとなります; もし両方とも定義しなければ、非データデスクリ プタです。 通常、データデスクリプタでは、 :meth:`__get__` と :meth:`__set__` を定義 し、 一方、非データデスクリプタには :meth:`__get__` メソッドしかありません。 インスタンス辞書内で属性値が再定義されても、データデスクリプタは常にこの値 をオーバライドします。対照的に、非データデスクリプタの @@ -1420,13 +1440,13 @@ *__slots__* に定義されているインスタンス変数のデフォルト値はクラス属性を 使って設定できなくなっています; そうしないと、 デスクリプタによる代入をクラス属性が上書きしてしまうからです。 +* *__slots__* 宣言が動作するのは、定義が行われたクラスだけに限られていま す。その結果、サブクラスでは、 *__slots__* を定義しない限り + *__dict__* を持つことになります。 + * あるクラスで、基底クラスですでに定義されているスロットを定義した場合、基 底クラスのスロットで定義されているインスタンス変数は (デスクリプタを基底クラスから直接取得しない限り) アクセスできなくなりま す。これにより、プログラムの趣意が不定になってしまいます。 将来は、この問題を避けるために何らかのチェックが追加されるかもしれませ ん。 -* *__slots__* 宣言が動作するのは、定義が行われたクラスだけに限られていま す。その結果、サブクラスでは、 *__slots__* を定義しない限り - *__dict__* を持つことになります。 - * 空でない *__slots__* は、 :class:`long` 、 :class:`str` 、およ び :class:`tuple` といった、"可変長 (variable-length)" の組み込み型から派生したクラスでは動作しません。 @@ -1491,6 +1511,40 @@ メタクラスは限りない潜在的利用価値を持っています。これまで試されてきたアイ デアには、ログ記録、インタフェースのチェック、 自動デリゲーション、自動プロパティ生成、プロキシ、フレームワーク、そして自 動リソースロック/同期といったものがあります。 +インスタンスのカスタマイズとサブクラスチェック +---------------------------------------------- + +.. versionadded:: 2.6 + +以下のメソッドは組み込み関数 :func:`isinstance` と :func:`issubclass` のデ フォルトの動作を上書きするのに利用します。 + +特に、 :class:`abc.ABCMeta` メタクラスは、抽象基底クラス (ABCs) を"仮想基底 クラス (virtual base classes)" として +任意のクラスや (組み込み型を含む) 型に追加するために、また他の ABC に組み込 むためにこれらのメソッドを実装しています。 + +.. method:: class.__instancecheck__(self, instance) + + *instance* が (直接、または間接的に) *class* のインスタンスと考えられる 場合に true を返します。 + 定義されていれば、 ``isinstance(instance, class)`` の実装のために呼び出 されます。 + + +.. method:: class.__subclasscheck__(self, subclass) + + *subclass* が (直接、または間接的に) *class* のサブクラスと考えられる場 合に true を返します。 + 定義されていれば、 ``issubclass(subclass, class)`` の実装のために呼び出 されます。 + +これらはクラスのタイプ(メタクラス)についての検査メソッドであることを留意 しておいて下さい。 +これらは実際のクラスでクラスメソッドとして定義することはできません。 +このことは検査がインスタンスを要求する特別なメソッドであることに密接に関係 しています、 +インスタンス自身がクラスであるのはこの場合だけです。 + +.. seealso:: + + :pep:`3119` - Introducing Abstract Base Classes + :meth:`__instancecheck__` と :meth:`__subclasscheck__` を通して、 + :func:`isinstance` と :func:`issubclass` の動作をカスタマイズする仕様 が、 + 言語に抽象基底クラス (:mod:`abc` モジュールを参照してください) を追加 するという + 背景に基いた動機づけとともに載っています。 + .. _callable-types: @@ -1606,8 +1660,11 @@ :meth:`__reversed__` メソッドが提供されない場合、 :func:`reversed` ビルトイン関数はシーケンスプロトコル (:meth:`__len__` と :meth:`__getitem__`) へとフォールバックします。 - オブジェクトは通常、シーケンスプロトコルをサポートしておらず、効率的な逆 方向 - イテレーションが可能な場合のみ、 :meth:`__reversed__` を提供するべきで す。 + + このシーケンスプロトコルをサポートするオブジェクトは + :func:`reversed` が提供するより効率的な実装を提供できる場合には、 + :meth:`__reversed__` のみを提供するべきです。 + .. versionadded:: 2.6 @@ -1622,6 +1679,11 @@ メンバシップテスト演算を実現するために呼び出されます。 *item* が *self* 内に存在する場合には真を、そうでない場合には 偽を返さなければなりません。マップオブジェクトの場合、値やキーと値の組で はなく、キーに対するメンバシップテストを考えなければなりません。 + :meth:`__contains__` を定義しないオブジェクトに対しては、メンバシップテ ストはまず、 + :meth:`__iter__` を使った反復を試みます、次に古いシーケンス反復プロトコ ル + :meth:`__getitem__` を使います、 + :ref:`言語レファレンスのこの節 <membership-test-details>` を参照して下さ い。 + .. _sequence-methods: @@ -2105,13 +2167,6 @@ これは、正しく扱われなかった場合にとても奇妙な動作を引き起こすので、 一般的には良い考えではありません。 -.. [#] ディスクリプタ は :meth:`__get__`, :meth:`__set__`, :meth:`__delete__` の - 任意の組み合わせで定義することができます。 - :meth:`__get__` を定義していない場合、その属性へのアクセスはインスタンス に対してであっても - ディスクリプタ自体を返します。 - ディスクリプタが :meth:`__set__` かつ/または :meth:`__delete__` を定義し ていた場合、 - これはデータディスクリプタで、両方とも定義されていない場合は非データディ スクリプタです。 - .. [#] 同じ型の操作に対しては、(:meth:`__add__` のような)逆転できないメソッ ドが失敗した時と同じような想定のもと処理されます。 これは、逆転したメソッドを呼び出すことができないからです。 ============================================================================== Revision: f919a8195caf Author: Akihiro Uchida <uchid****@ike-d*****> Date: Sat May 14 18:32:56 2011 Log: 2.6.6: translate reference/executionmodel.rst http://code.google.com/p/python-doc-ja/source/detail?r=f919a8195caf Modified: /reference/executionmodel.rst ======================================= --- /reference/executionmodel.rst Sun Nov 28 22:16:41 2010 +++ /reference/executionmodel.rst Sat May 14 18:32:56 2011 @@ -114,7 +114,7 @@ :mod:`__builtin__` モジュールそれ自身の辞書のエイリアスです。 ``__builtins__`` はユーザが作成した辞書を 設定して、弱い形態の制限実行 を作成することが可能です。 -.. note:: +.. impl-detail:: ユーザは ``__builtins__`` に触れるべきではありません;これはくれぐれも実 装の詳細であるのです。組み込みの名前空間の中の値を オーバーライドしたいユーザは、 :mod:`__builtin__` ('s'はありません) モ ジュールを :keyword:`import` @@ -197,7 +197,7 @@ 例外は文字列 (strings) によっても識別することができ、このような場合に は :keyword:`except` 節はオブジェクトの同一性によって選択されます。任意の値をハンドラに渡される 識別文字列に伴って送出することができます。 -.. warning:: +.. note:: 例外に対するメッセージは、Python API 仕様には含まれていません。メッセー ジの内容は、ある Python のバージョンから次のバージョンに なるときに、警告なしに変更される可能性があります。したがって、複数バージ ョンのインタプリタで動作するようなコードにおいては、 ============================================================================== Revision: e1bb740de2cc Author: Akihiro Uchida <uchid****@ike-d*****> Date: Sat May 14 18:33:13 2011 Log: 2.6.6: translate reference/expressions.rst http://code.google.com/p/python-doc-ja/source/detail?r=e1bb740de2cc Modified: /reference/expressions.rst ======================================= --- /reference/expressions.rst Sun Mar 20 19:36:50 2011 +++ /reference/expressions.rst Sat May 14 18:33:13 2011 @@ -157,6 +157,7 @@ list_comprehension: `expression` `list_for` list_for: "for" `target_list` "in" `old_expression_list` [`list_iter`] old_expression_list: `old_expression` [("," `old_expression`)+ [","]] + old_expression: `or_test` | `old_lambda_form` list_iter: `list_for` | `list_if` list_if: "if" `old_expression` [`list_iter`] @@ -568,12 +569,13 @@ デフォルト値が指定されていない、値の埋められていないスロットが残っている場 合 :exc:`TypeError` 例外が送出されます。 そうでない場合、値の埋められたスロットからなるリストが呼び出しの引数として 使われます。 -.. note:: - 実際の実装では、名前を持たない固定引数を受け取る組み込み関数を提供する かもしれません。 - そういった組み込み関数がドキュメント化の目的で '名前' を設けていたとし ても、 - 実際には持っていないのでキーワードによって提供されません。 - CPython では、C 言語で実装された関数の名前を持たない固定引数を解析する ために - :cfunc:`PyArg_ParseTuple` を使用します。 +.. impl-detail:: + + 実際の実装では、名前を持たない固定引数を受け取る組み込み関数を提供するか もしれません。 + そういった組み込み関数がドキュメント化の目的で '名前' を設けていたとして も、 + 実際には持っていないのでキーワードによって提供されません。 + CPython では、C 言語で実装された関数の名前を持たない固定引数を解析するた めに + :cfunc:`PyArg_ParseTuple` を使用します。 仮引数スロットの数よりも多くの固定引数がある場合、構文 ``*identifier`` を 使って指定された仮引数がないかぎり、 :exc:`TypeError` 例外が送出されます; 仮引数 ``*identifier`` がある場合、こ の仮引数は余分な固定引数が入ったタプル @@ -911,6 +913,8 @@ * その他のほとんどの組み込み型のオブジェクト比較では、同じオブジェクトでな いかぎり等価にはなりません;あるオブジェクトの他のオブジェクトに対する 大小関係は任意に決定され、一つのプログラムの実行中は一貫したものとなりま す。 +.. _membership-test-details: + 演算子 :keyword:`in` および :keyword:`not in` は、コレクション型の要素であ るかどうか (メンバシップ、membership) を調べます。 ``x in s`` は、 *x* がコレクション型 *s* のメンバである場合に は真となり、それ以外の場合には偽となります。 ``x not in s`` は ``x in s`` の否定 (negation) を返します。コレクション型のメンバシップテ ストは、伝統的にはシーケンス型に限定されてきました; @@ -932,10 +936,16 @@ :meth:`__contains__` メソッドの定義されたユーザ定義クラスでは、 ``x in y`` が真となるのは ``y.__contains__(x)`` が真となるとき、かつそのときに限ります。 -:meth:`__contains__` は定義していないが :meth:`__getitem__` は定義している ようなユーザ定義クラスでは、 ``x in -y`` は ``x == y[i]`` となるような非負の整数インデクス *i* が存在するとき、 かつそのときにかぎり真となります。インデクス *i* -が負である場合に :exc:`IndexError` 例外が送出されることはありません。 (別の 何らかの例外が送出された場合、例外は -:keyword:`in` から送出されたかのようになります)。 +:meth:`__contains__` を定義していないが :meth:`__iter__` は定義しているユー ザ定義クラスでは、 +``x in y`` は ``x == z`` となるようなある値 `z` が ``y`` 内にわたる反復で生 成された場合、 +true となります。 +もし、反復の間に例外が発生すれば、 :keyword:`in` が例外を発生させたようにみ えます。 + +最終的には、旧式の反復プロトコルの実行を試みます、もし +:meth:`__getitem__` を定義しているようなユーザ定義クラスでは、 ``x in y`` は +``x == y[i]`` となるような非負の整数インデクス *i* が存在するとき、かつその ときにかぎり真となります。 +インデクス *i* が負である場合に :exc:`IndexError` 例外が送出されることはあ りません。 +(別の何らかの例外が送出された場合、例外は :keyword:`in` から送出されたかの ようになります)。 .. index:: operator: in @@ -966,12 +976,7 @@ pair: Conditional; expression pair: Boolean; operation -ブール演算は、全ての Python 演算子の中で、最も低い優先順位になっています: - .. productionlist:: - expression: `conditional_expression` | `lambda_form` - old_expression: `or_test` | `old_lambda_form` - conditional_expression: `or_test` ["if" `or_test` "else" `expression`] or_test: `and_test` | `or_test` "or" `and_test` and_test: `not_test` | `and_test` "and" `not_test` not_test: `comparison` | "not" `not_test` @@ -985,11 +990,6 @@ 演算子 :keyword:`not` は、引数が偽である場合には ``1`` を、それ以外の場合に は ``0`` になります。 -式 ``x if C else y`` はまず *C* を評価 (*x* では *ない* です)します;もし *C* が true な場合、*x* -が評価されてその値が返されます;そうでなければ *y* が評価されてその値が返さ れます。 - -.. versionadded:: 2.5 - .. index:: operator: and 式 ``x and y`` は、まず *x* を評価します; *x* が偽なら *x* の値を返します; それ以外の場合には、 *y* @@ -1007,7 +1007,28 @@ 'foo'`` は、 ``''`` ではなく ``0`` になります) -.. _lambdas: +条件演算 (Conditional Expressions) +================================== + +.. versionadded:: 2.5 + +.. index:: + pair: conditional; expression + pair: ternary; operator + +.. productionlist:: + conditional_expression: `or_test` ["if" `or_test` "else" `expression`] + expression: `conditional_expression` | `lambda_form` + +条件演算式 (しばしば、"三項演算子" と呼ばれます) は最も優先度が低いPython の操作です。 + +``x if C else y`` という式は最初に条件 *C* (*x* では *ありません*) を評価し ます; +*C* が true の場合 *x* が評価され値が返されます; それ以外の場合には *y* が 評価され返されます。 + +条件演算に関してより詳しくは :pep:`308` を参照してください。 + + +.. _lambda: ラムダ (lambda) =============== @@ -1033,8 +1054,6 @@ 引数リストの構文法については :ref:`function` 節を参照してください。ラムダ形 式で作成された関数は、実行文 (statement) を含むことができないので注意してください。 -.. _lambda: - .. _exprlists: @@ -1091,6 +1110,8 @@ | 演算子 | 説 明 | +===============================================+================================+ | :keyword:`lambda` | ラムダ 式 | ++-----------------------------------------------+--------------------------------+ +| :keyword:`if` -- :keyword:`else` | 条件演 算 | +-----------------------------------------------+--------------------------------+ | :keyword:`or` | ブール演算 OR | +-----------------------------------------------+--------------------------------+ @@ -1145,7 +1166,7 @@ .. [#] ユニコード文字列間の比較はバイトレベルでは当然とはいえ、ユーザにとっ ては直感的ではないかもしれません。 例えば、文字列 ``u"\u00C7"`` と ``u"\u0043\u0327"`` の比較は、 - 両方の文字列が同じユニコード文字(LATIN CAPTITAL LETTER C WITH CEDILLA)で 表されたとしても違います。 + 両方の文字列が同じユニコード文字(LATIN CAPITAL LETTER C WITH CEDILLA)で 表されたとしても違います。 人間が分かり易い方法で文字列を比較するため に :func:`unicodedata.normalize` を使用して比較してください。 .. [#] 実装では、この演算をリストを構築したりソートしたりすることなく効率的 に行います。 ============================================================================== Revision: e06985711cc2 Author: Akihiro Uchida <uchid****@ike-d*****> Date: Sat May 14 18:33:33 2011 Log: 2.6.6: translate reference/simple_stmts.rst http://code.google.com/p/python-doc-ja/source/detail?r=e06985711cc2 Modified: /reference/simple_stmts.rst ======================================= --- /reference/simple_stmts.rst Sun Mar 20 19:28:32 2011 +++ /reference/simple_stmts.rst Sat May 14 18:33:33 2011 @@ -137,6 +137,23 @@ :exc:`TypeError` が送出されます。次に、このオブジェクトに対して、被代入オ ブジェクトを指定した属性に代入してよいか問い合わせます; 代入を実行できない場合、例外 (通常は :exc:`AttributeError` ですが、必然で はありません) を送出します。 + .. _attr-target-note: + + 注意: オブジェクトがクラスインスタンスで代入演算子の両辺で属性への参照が 起きた場合、 + 右辺式の ``a.x`` はインスタンスの属性か (もしインスタンスの属性が存在しな ければ) クラス属性 + の両方にアクセスできます。 + 左辺の代入の対象となる ``a.x`` は常にインスタンスの属性が割り当てられ、必 要ならば生成されます。 + このようにして、 ``a.x`` の二つの出現は同じ値を参照する必要はありません: もし右辺式がクラス属性を参照する場合、 + 左辺は新しいインスタンス属性を代入の対象として生成します:: + + class Cls: + x = 3 # class variable + inst = Cls() + inst.x = inst.x + 1 # writes inst.x as 4 leaving Cls.x as 3 + + この記述はデスクリプタ属性に対しては必ずしも適用できるとは限りません、 + そのようなプロパティは :func:`property` で作成されます。 + .. index:: pair: subscription; assignment object: mutable @@ -170,7 +187,9 @@ 最後に、スライスを被代入オブジェクトで置き換えてよいかシーケンスオブジェ クトに問い合わせます。オブジェクトで許されている限り、スライスの長さは 被代入シーケンスの長さと異なっていてよく、この場合にはターゲットシーケン スの長さが変更されます。 -(現在の実装では、ターゲットの構文は式の構文と同じであるとみなされており、無 効な構文はコード生成フェーズ中に詳細なエラーメッセージを伴って拒否されます。 ) +.. impl-detail:: + + 現在の実装では、ターゲットの構文は式の構文と同じであるとみなされており、 無効な構文はコード生成フェーズ中に詳細なエラーメッセージを伴って拒否されま す。 警告: 代入の定義では、左辺値と右辺値がオーバラップするような代入 (例えば、 ``a, b = b, a`` を行うと、二つの変数を入れ替えます) を 定義しても '安全 (safe)' に代入できますが、代入対象となる変数群 *の間で* オーバラップがある場合は安全ではありません! @@ -213,16 +232,7 @@ 累算代入文で行われる代入は、タプルへの代入や、一文中に複数のターゲットが存 在する場合を除き、通常の代入と同じように扱われます。 同様に、累算代入で行われる二項演算は、場合によって *インプレース演算* が行 われることを除き、通常の二項演算と同じです。 -属性参照のターゲットの場合、代入前の初期値は :meth:`getattr` で取り出され、 演算結果は :meth:`setattr` で代入されます。 -二つのメソッドが同じ変数を参照するという必然性はないので注意してください。 例えば:: - - class A: - x = 3 # class variable - a = A() - a.x += 1 # writes a.x as 4 leaving A.x as 3 - -のように、 :meth:`getattr` がクラス変数を参照していても、 :meth:`setattr` はインスタンス変数への書き込みを行ってしまいます。 - +属性参照のターゲットの場合、:ref:`クラスとインスタンスの属性についての注意 <attr-target-note>` と同様に通常の代入が適用されます。 .. _assert: @@ -246,7 +256,7 @@ と等価です。拡張形式 ``assert expression1, expression2`` は、 :: if __debug__: - if not expression1: raise AssertionError, expression2 + if not expression1: raise AssertionError(expression2) と等価です。 @@ -335,7 +345,7 @@ :keyword:`print` は、式を逐次的に評価し、得られたオブジェクトを標準出力に書 き出します。オブジェクトが文字列でなければ、まず文字列 変換規則を使って文字列に変換され、次いで (得られた文字列か、オリジナルの文 字列が) 書き出されます。出力系の現在の書き出し位置が行頭にある と考えられる場合を除き、各オブジェクトの出力前にスペースが一つ出力されま す。行頭にある場合とは、(1) 標準出力にまだ何も書き出されていない場合、(2) -標準出力に最後に書き出された文字が ``'\n'`` である、または (3) 標準出力に対 する最後の書き出し操作が :keyword:`print` +標準出力に最後に書き出された文字が ``' '`` を除く空白である、または (3) 標 準出力に対する最後の書き出し操作が :keyword:`print` 文によるものではない場合、です。(こうした理由から、場合によっては空文字を標 準出力に書き出すと便利なことがあります。) .. note:: @@ -814,6 +824,11 @@ :option:`-i` オプションで起動して実行すべきスクリプト名を渡し、スクリプト中 に future 文を入れておくと、新たな機能は スクリプトが実行された後に開始する対話セッションで有効になります。 +.. seealso:: + + :pep:`236` - Back to the __future__ + __future__ 機構の原案 + .. _global: @@ -837,8 +852,10 @@ :keyword:`global` 文で列挙する名前は、 :keyword:`for` ループのループ制御 ターゲットや、 :keyword:`class` 定義、関数定義、 :keyword:`import` 文内で仮引数として使ってはなりません。 -(現在の実装では、後ろ二つの制限については強制していませんが、プログラムでこ の緩和された仕様を乱用すべきではありません。 -将来の実装では、この制限を強制したり、暗黙のうちにプログラムの意味付けを変 更したりする可能性があります。) +.. impl-detail:: + + 現在の実装では、後ろ二つの制限については強制していませんが、プログラムで この緩和された仕様を乱用すべきではありません。 + 将来の実装では、この制限を強制したり、暗黙のうちにプログラムの意味付けを 変更したりする可能性があります。 .. index:: statement: exec