pytho****@googl*****
pytho****@googl*****
2011年 11月 6日 (日) 01:03:18 JST
Revision: 5dba1953d2fe Author: Naoki INADA <inada****@klab*****> Date: Sat Nov 5 09:02:39 2011 Log: Update 2.7.2: codecs, pickle, datetime. http://code.google.com/p/python-doc-ja/source/detail?r=5dba1953d2fe Modified: /library/codecs.rst /library/datetime.rst /library/datetime.rst.diff /library/pickle.rst ======================================= --- /library/codecs.rst Sat Apr 9 17:05:31 2011 +++ /library/codecs.rst Sat Nov 5 09:02:39 2011 @@ -782,11 +782,10 @@ Unicode 文字列は内部的にはコードポイントのシーケンスとして格納されます (正確に言えば :c:type:`Py_UNICODE` 配列です)。 Python がどのようにコンパイルされたか (デフォルトである -:option:`--enable-unicode=ucs2` かまたは -:option:`--enable-unicode=ucs4` のどちらか) によって、 -:c:type:`Py_UNICODE` は16ビットまたは32ビットのデータ型です。 Unicode -オブジェクトが CPU とメモリの外で使われることになると、 CPU のエンディ -アンやこれらの配列がバイト列としてどのように格納されるかが問題になって +``--enable-unicode=ucs2`` かまたは ``--enable-unicode=ucs4`` のどちらか) +によって、 :c:type:`Py_UNICODE` は16ビットまたは32ビットのデータ型です。 +Unicode オブジェクトが CPU とメモリの外で使われることになると、 +CPU のエンディアンやこれらの配列がバイト列としてどのように格納されるかが問 題になって きます。 Unicode オブジェクトをバイト列に変換することをエンコーディン グと呼び、バイト列から Unicode オブジェクトを再生することをデコーディ ングと呼びます。どのようにこの変換を行うかには多くの異なった方法があり @@ -939,6 +938,8 @@ +-----------------+--------------------------------+------------------------------------------------------+ | cp500 | EBCDIC-CP-BE, EBCDIC-CP-CH, | 西ヨーロッパ言 語 | | | IBM500 | | ++-----------------+--------------------------------+------------------------------------------------------+ +| cp720 | | アラビア 語 | +-----------------+--------------------------------+------------------------------------------------------+ | cp737 | | ギリシャ 語 | +-----------------+--------------------------------+------------------------------------------------------+ @@ -953,6 +954,8 @@ | cp856 | | ヘブライ 語 | +-----------------+--------------------------------+------------------------------------------------------+ | cp857 | 857, IBM857 | トルコ 語 | ++-----------------+--------------------------------+------------------------------------------------------+ +| cp858 | 858, IBM858 | 西ヨーロッ パ | +-----------------+--------------------------------+------------------------------------------------------+ | cp860 | 860, IBM860 | ポルトガル 語 | +-----------------+--------------------------------+------------------------------------------------------+ @@ -1211,13 +1214,20 @@ る前に Unicode に、それぞれ透過的に変換しなければなりません。 Python ではこの変換をいくつかの方法でサポートします: ``idna`` codec は -Unicode と ACE 間の変換を行います。さらに、 :mod:`socket` モジュールは Unicode ホスト名を ACE に透過的に変換するため、アプリケーションはホスト名 を :mod:`socket` +Unicode と ACE 間の変換を行い、入力文字列を :rfc:`3490` の +`section 3.1`_ (1) で定義されている区切り文字に基づいてラベルに分解し、 +各ラベルを要求通りに ACE に変換します。逆に、入力のバイト文字列を +``.`` 区切り文字でラベルに分解し、 ACE ラベルを Unicode に変換します。 +さらに、 :mod:`socket` モジュールは Unicode ホスト名を ACE に透過的に +変換するため、アプリケーションはホスト名を :mod:`socket` モジュールに渡す際にホスト名の変換に煩わされることがありません。その上 で、ホスト名を関数パラメタとして持つ、 :mod:`httplib` や :mod:`ftplib` のようなモジュールでは Unicode ホスト名を受理します (:mod:`httplib` で もまた、 ``Host:`` フィールドにある IDNA ホスト名を、フィールド全体を 送信する場合に透過的に送信します)。 +.. _section 3.1: http://tools.ietf.org/html/rfc3490#section-3.1 + (逆引きなどによって) ワイヤ越しにホスト名を受信する際、 Unicode への自 動変換は行われません: こうしたホスト名をユーザに提供したいアプリケーショ ンでは、 Unicode にデコードしてやる必要があります。 ======================================= --- /library/datetime.rst Fri Jun 3 08:50:44 2011 +++ /library/datetime.rst Sat Nov 5 09:02:39 2011 @@ -289,12 +289,28 @@ また、ブール演算コンテキストでは、 :class:`timedelta` オブジェクトは ``timedelta(0)`` に等しくない場合かつそのときに限り真となります。 +インスタンスメソッド: + +.. method:: timedelta.total_seconds() + + この期間に含まれるトータルの秒数を返します。 + true division が有効な場合の、 ``(td.microseconds + (td.seconds + + td.days * 24 * 3600) * 10**6) / 10**6`` と同じです。 + + 非常に長い期間 (多くのプラットフォームでは270年以上) については、 + このメソッドはマイクロ秒の精度を失うことがあることに注意してください。 + + .. versionadded:: 2.7 + + 使用例: >>> from datetime import timedelta >>> year = timedelta(days=365) >>> another_year = timedelta(weeks=40, days=84, hours=23, ... minutes=50, seconds=600) # 365日になるよ うに足し算 + >>> year.total_seconds() + 31536000.0 >>> year == another_year True >>> ten_years = 10 * year @@ -467,9 +483,10 @@ :func:`time.localtime` が返す形式の :class:`time.struct_time` を返 します。時間、分、および秒は 0 で、DST フラグは -1 になります。 - ``d.timetuple()`` は ``time.struct_time((d.year, d.month, d.day, 0, - 0, 0, d.weekday(), d.toordinal() - date(d.year, 1, 1).toordinal() + - 1, -1))`` と等価です。 + ``d.timetuple()`` は次の値と同値です: + ``time.struct_time((d.year, d.month, d.day, 0, 0, 0, d.weekday(), yday, -1))`` + ただし ``yday = d.toordinal() - date(d.year, 1, 1).toordinal() + 1`` + が 1月1日 に 1 で始まる現在の年の日を表す .. method:: date.toordinal() @@ -970,9 +987,13 @@ .. method:: datetime.timetuple() - :func:`time.localtime` が返す形式の :class:`time.struct_time` を返しま す。 ``d.timetuple()`` - は ``time.struct_time((d.year, d.month, d.day, d.hour, d.minute, d.second, - d.weekday(), d.toordinal() - date(d.year, 1, 1).toordinal() + 1, dst))`` と等価です。 + :func:`time.localtime` が返す形式の :class:`time.struct_time` を返しま す。 + ``d.timetuple()`` は次の値と等価です: + ``time.struct_time((d.year, d.month, d.day, + d.hour, d.minute, d.second, d.weekday(), yday, dst))``, ただし ``yday = + d.toordinal() - date(d.year, 1, 1).toordinal() + 1`` は 1月1日が ``1`` + で始まるその年の中の日の数. + 返されるタプルの :attr:`tm_isdst` フラグは :meth:`dst` メソッドに従って 設定されます: :attr:`tzinfo` が ``None`` か :meth:`dst` が ``None`` を返す場合、 :attr:`tm_isdst` は ``-1`` に設定されます; そうでない場合、 :meth:`dst` がゼロでない値を返すと, :attr:`tm_isdst` は ``1`` となります; それ以外の場合には ======================================= --- /library/datetime.rst.diff Sun Oct 30 17:04:23 2011 +++ /library/datetime.rst.diff Sat Nov 5 09:02:39 2011 @@ -88,14 +88,16 @@ Return a :class:`time.struct_time` such as returned by :func:`time.localtime`. ``d.timetuple()`` is equivalent to ``time.struct_time((d.year, d.month, d.day, - d.hour, d.minute, d.second, d.weekday(), d.toordinal() - date(d.year, 1, -- 1).toordinal() + 1, dst))`` The :attr:`tm_isdst` flag of the result is set +- 1).toordinal() + 1, dst))`` ++ d.hour, d.minute, d.second, d.weekday(), yday, dst))``, where ``yday = ++ d.toordinal() - date(d.year, 1, 1).toordinal() + 1`` is the day number within ++ the current year starting with ``1`` for January 1st. +- The :attr:`tm_isdst` flag of the result is set - according to the :meth:`dst` method: :attr:`tzinfo` is ``None`` or :meth:`dst` - returns ``None``, :attr:`tm_isdst` is set to ``-1``; else if :meth:`dst` - returns a non-zero value, :attr:`tm_isdst` is set to ``1``; else ``tm_isdst`` is - set to ``0``. -+ d.hour, d.minute, d.second, d.weekday(), yday, dst))``, where ``yday = -+ d.toordinal() - date(d.year, 1, 1).toordinal() + 1`` is the day number within -+ the current year starting with ``1`` for January 1st. The :attr:`tm_isdst` flag ++ The :attr:`tm_isdst` flag + of the result is set according to the :meth:`dst` method: :attr:`tzinfo` is + ``None`` or :meth:`dst` returns ``None``, :attr:`tm_isdst` is set to ``-1``; + else if :meth:`dst` returns a non-zero value, :attr:`tm_isdst` is set to ``1``; ======================================= --- /library/pickle.rst Wed Apr 20 03:07:25 2011 +++ /library/pickle.rst Sat Nov 5 09:02:39 2011 @@ -29,6 +29,12 @@ このドキュメントでは :mod:`pickle` モジュールおよび :mod:`cPickle` モ ジュールの両方について記述します。 +.. warning:: + + :mod:`pickle` モジュールはエラーや不正に生成されたデータに対するセキュリ ティを + 考慮していません。信頼できない、あるいは認証されていないソースから受信し たデータを + unpickle してはいけません。 + 他の Python モジュールとの関係 ------------------------------ @@ -83,13 +89,6 @@ 全ての Python リリース間で以前のバージョンとの互換性が保証されていま す。 -.. warning:: - - :mod:`pickle` モジュールは誤りを含む、あるいは悪意を持って構築され - たデータに対して安全にはされていません。信用できない、あるいは認証 - されていないデータ源から受信したデータを逆 pickle 化しないでくださ - い。 - 直列化は永続化 (persisitence) よりも原始的な概念です; :mod:`pickle` は ファイルオブジェクトを読み書きしますが、永続化されたオブジェクトの名前 付け問題や、(より複雑な) オブジェクトに対する競合アクセスの問題を扱い @@ -481,7 +480,7 @@ :meth:`__getstate__` メソッドが定義されていない場合、インスタンス の :attr:`__dict__` の内容が pickle 化されます。 -.. method:: object.__setstate__() +.. method:: object.__setstate__(state) unpickle 化では、クラスが :meth:`__setstate__` も定義していた場合、 unpickle 化された状態値とともに呼び出されます。 [#]_