pytho****@googl*****
pytho****@googl*****
2011年 11月 6日 (日) 00:39:56 JST
Revision: d3e2abf08771 Author: Naoki INADA <inada****@klab*****> Date: Sat Nov 5 08:39:20 2011 Log: Update 2.7.2: contextlib, mmap, locale http://code.google.com/p/python-doc-ja/source/detail?r=d3e2abf08771 Modified: /library/contextlib.rst /library/locale.rst /library/mmap.rst ======================================= --- /library/contextlib.rst Sat Mar 19 03:35:39 2011 +++ /library/contextlib.rst Sat Nov 5 08:39:20 2011 @@ -14,6 +14,11 @@ このモジュールは :keyword:`with` 構文に関わる一般的なタスクのためのユーティ リティを提供します。 詳しい情報は、 :ref:`typecontextmanager` と :ref:`context-managers` を参照 してください。 +.. seealso:: + + 最新バージョンの `contextlib Python source code + <http://svn.python.org/view/python/branches/release27-maint/Lib/contextlib.py?view=markup>`_ + .. Functions provided: @@ -90,47 +95,17 @@ .. function:: nested(mgr1[, mgr2[, ...]]) - .. Combine multiple context managers into a single nested context manager. - 複数のコンテキストマネージャを一つのネストされたコンテキストマネージャへ 結合します。 - - .. Code like this: - - このようなコードは - - - :: - - from contextlib import nested - - with nested(A(), B(), C()) as (X, Y, Z): + この関数は、 :keyword:`with` 文にマルチマネージャー形式ができたために非 推奨になりました。 + + この関数の :keyword:`with` 文のマルチマネージャー形式に対する唯一の利点 は、 + 引数のアンパックによって、次の例のように可変数個のコンテキストマネージ ャーを + 扱えることです。 :: + + with nested(*managers): do_something() - - .. is equivalent to this: - - これと同等です: - - - :: - - m1, m2, m3 = A(), B(), C() - with m1 as X: - with m2 as Y: - with m3 as Z: - do_something() - - - .. Note that if the :meth:`__exit__` method of one of the nested context managers - .. indicates an exception should be suppressed, no exception information will be - .. passed to any remaining outer context managers. Similarly, if the - .. :meth:`__exit__` method of one of the nested managers raises an exception, any - .. previous exception state will be lost; the new exception will be passed to the - .. :meth:`__exit__` methods of any remaining outer context managers. In general, - .. :meth:`__exit__` methods should avoid raising exceptions, and in particular they - .. should not re-raise a passed-in exception. - ネストされたコンテキストマネージャのうちのいずれかの :meth:`__exit__` メ ソッドが 例外を抑制すべきと判断した場合、外側にある残りのすべてのコンテキストマ ネージャに 例外情報が渡されないということに注意してください。同様に、ネストされた @@ -140,6 +115,26 @@ 一般的に :meth:`__exit__` メソッドが例外を送出することは避けるべきであ り、 特に渡された例外を再送出すべきではありません。 + この関数が非推奨になった理由に、2つの大きな問題があります。 + 1つ目は、全てのコンテキストマネージャーが関数が呼び出される前に構築され ることです。 + 内側のコンテキストマネージャーの :meth:`__new__` と :meth:`__init__` メ ソッドは + 外側のコンテキストマネージャーの内側に入っていません。 + つまり、例えば :func:`nested` を2つのファイルを開くために利用した場合、 + 2つめのファイルを開くのに失敗すると1つめのファイルが正しく close されな いという + プログラムエラーになります。 + + 2つ目の問題は、内側のコンテキストマネージャーの1つの :meth:`__enter__` メソッドが + 例外を発生させたときに、外側のコンテキストマネージャー の :meth:`__exit__` + メソッドがその例外を捕まえて抑制させてしまうことで、この場合 に :keyword:`with` + の body 部分の実行がスキップされるのではなく :exc:`RuntimeError` が発生 する恐れがあります。 + + 可変数個のコンテキストマネージャーのネストをサポートしなければならない場 合、 + :mod:`warnings` モジュールを利用してこの関数が発生させる DeprecationWarning + を抑制するか、この関数を参考にしてアプリケーション独自の実装をすることが できます。 + + .. deprecated:: 2.7 + with 文がこの関数の機能を(この関数と違って奇妙なエラーを発生させるこ となしに) + 直接サポートしました。 .. function:: closing(thing) ======================================= --- /library/locale.rst Mon Mar 21 08:59:49 2011 +++ /library/locale.rst Sat Nov 5 08:39:20 2011 @@ -130,7 +130,8 @@ .. data:: D_T_FMT - 時刻および日付をロケール特有の方法で表現するため に、 :func:`strftime` の書式化文字列として用いることのできる文字列を取得しま す。 + 日付と時刻をロケール特有の方法で表現するために、 :func:`strftime` + の書式化文字列として用いることのできる文字列を取得します。 .. data:: D_FMT @@ -207,7 +208,13 @@ .. data:: ERA_D_FMT - 日付をロケール固有の年代に基づいた方法で表現するため に、 :func:`strftime` の書式化文字列として用いることのできる文字列を取得しま す。 + 日付をロケール固有の年代に基づいた方法で表現するため に、 :func:`strftime` + の書式化文字列として用いることのできる文字列を取得します。 + + .. data:: ERA_T_FMT + + 時刻をロケール固有の年代に基づいた方法で表現するため に、 :func:`strftime` + の書式化文字列として用いることのできる文字列を取得します。 .. data:: ALT_DIGITS @@ -453,7 +460,10 @@ :func:`bind_textdomain_codeset` からなります。これらは :mod:`gettext` モジ ュールの同名の関数に似ていますが、 メッセージカタログとして C ライブラリのバイナリフォーマットを使い、メッセー ジカタログを探すために C ライブラリのサーチアルゴリズムを使います。 -Python アプリケーションでは、通常これらの関数を呼び出す必要はないはずで、代 わりに :mod:`gettext` を呼ぶべきです。 -例外として知られているのは、内部で :cfunc:`gettext` また は :func:`dcgettext` を呼び出すような C ライブラリにリンク -するアプリケーションです。こうしたアプリケーションでは、ライブラリが正しい メッセージカタログを探せるようにテキストドメイン名を指定する必要があります。 - +Python アプリケーションでは、通常これらの関数を呼び出す必要はないはずで、 +代わりに :mod:`gettext` を呼ぶべきです。 +例外として知られているのは、内部で :cfunc:`gettext` また は :func:`dcgettext` +を呼び出すような C ライブラリにリンクするアプリケーションです。 +こうしたアプリケーションでは、ライブラリが正しいメッセージカタログを探せる ように +テキストドメイン名を指定する必要があります。 + ======================================= --- /library/mmap.rst Fri Apr 15 21:39:13 2011 +++ /library/mmap.rst Sat Nov 5 08:39:20 2011 @@ -105,6 +105,10 @@ *offset* のデフォルトは 0 です。 *offset* は PAGESIZE または ALLOCATIONGRANULARITY の倍数でなければなりま せん。 + Mac OS X と OpenVMS において、作成された memory mapping の正当性を確実に するために + *fileno* で指定されたファイルディスクリプタは内部で自動的に物理的な + ストレージ (physical backing store) と同期されます。 + 以下の例は :class:`mmap` の簡単な使い方です:: import mmap @@ -180,7 +184,7 @@ オフセット *src* から始まる *count* バイトをインデックス *dest* の位置へコピーします。もし mmap が :const:`ACCESS_READ` で作成されて いた場合、 - :exc:`TypeError` 例外を送出します。 + :exc:`TypeError` 例外を発生させます。 .. method:: read(num) @@ -203,7 +207,7 @@ マップと元ファイル(がもしあれば)のサイズを変更します。 もし mmap が :const:`ACCESS_READ` または :const:`ACCESS_COPY` - で作成されたならば、マップサイズの変更は :exc:`TypeError` 例外を送出 します。 + で作成されたならば、マップサイズの変更は :exc:`TypeError` 例外を発生 させます。 .. method:: rfind(string[, start[, end]]) @@ -237,7 +241,7 @@ メモリ内のファイル・ポインタの現在位置に *string* のバイト列を書き込 みます。 ファイル位置はバイト列が書き込まれた後の位置へ更新されます。 もし mmap が :const:`ACCESS_READ` で作成されていた場合、 - 書き込み時に :exc:`TypeError` 例外が送出されるでしょう。 + 書き込み時に :exc:`TypeError` 例外を発生させるでしょう。 .. method:: write_byte(byte) @@ -245,4 +249,4 @@ メモリ内のファイル・ポインタの現在位置に単一文字の文字列 *byte* を書 き込みます。 ファイル位置は ``1`` だけ進みます。 もし mmap が :const:`ACCESS_READ` で作成されていた場合、 - 書き込み時に :exc:`TypeError` 例外が送出されるでしょう。 + 書き込み時に :exc:`TypeError` 例外を発生させるでしょう。