28.1. "sys" --- システムパラメータと関数
****************************************

このモジュールでは、インタプリタで使用・管理している変数や、インタプリ
タの動作に深く関連する関数を定義しています。このモジュールは常に利用可
能です。

sys.argv

   Pythonスクリプトに渡されたコマンドライン引数のリスト。 "argv[0]" は
   スクリプトの名前となりますが、フルパス名かどうかは、OSによって異な
   ります。コマンドライン引数に "-c" を付けて Pythonを起動した場合、
   "argv[0]" は文字列 "'-c'" となります。スクリプト名なしでPythonを起
   動した場合、 "argv[0]" は空文字列になります。

   標準入力もしくはコマンドライン引数で指定されたファイルのリストに渡
   ってループするには、 "fileinput" モジュールを参照してください。

sys.byteorder

   プラットフォームのバイト順を示します。ビッグエンディアン (最上位バ
   イトが先頭) のプラットフォームでは "'big'", リトルエンディアン (最
   下位バイトが先頭) では "'little'" となります。

   バージョン 2.0 で追加.

sys.builtin_module_names

   コンパイル時にPythonインタプリタに組み込まれた、全てのモジュール名
   のタプル(この情報は、他の手段では取得することができません。
   "modules.keys()" は、インポートされたモジュールのみのリストを返しま
   す。)

sys.call_tracing(func, args)

   トレーシングが有効な間、 "func(*args)" を呼び出します。トレーシング
   の状態は保存され、後で復元されます。これは、別のコードをチェックポ
   イントから再帰的にデバッグするために、デバッガから呼び出されること
   を意図しています。

sys.copyright

   Python インタプリタの著作権を表示する文字列です。

sys._clear_type_cache()

   内部の型キャッシュをクリアします。型キャッシュは属性とメソッドの検
   索を高速化するために利用されます。この関数は、参照リークをデバッグ
   するときに不要な参照を削除するため **だけ** に利用してください。

   この関数は、内部的かつ特殊な目的にのみ利用されるべきです。

   バージョン 2.6 で追加.

sys._current_frames()

   各スレッドの識別子を関数が呼ばれた時点のそのスレッドでアクティブに
   なっている一番上のスタックフレームに結びつける辞書を返します。モジ
   ュール "traceback" の関数を使えばそのように与えられたフレームのコー
   ルスタックを構築できます。

   この関数はデッドロックをデバッグするのに非常に有効です。デッドロッ
   ク状態のスレッドの協調動作を必要としませんし、そういったスレッドの
   コールスタックはデッドロックである限りフリーズしたままです。デッド
   ロックにないスレッドのフレームについては、そのフレームを調べるコー
   ドを呼んだ時にはそのスレッドの現在の実行状況とは関係ないところを指
   し示しているかもしれません。

   この関数は、内部的かつ特殊な目的にのみ利用されるべきです。

   バージョン 2.5 で追加.

sys.dllhandle

   Python DLLのハンドルを示す整数です。利用できる環境: Windows。

sys.displayhook(value)

   *value* が "None" 以外の場合、 "value" を "sys.stdout" に出力して
   "__builtin__._" に保存します。

   "sys.displayhook" は、Pythonの対話セッションで入力された式
   (*expression*)が評価されたときに呼び出されます。対話セッションの出
   力をカスタマイズする場合、 "sys.displayhook" に引数の数が一つの関数
   を指定します。

sys.dont_write_bytecode

   この値が真の時、Python はソースモジュールをインポートする時に
   ".pyc" や ".pyo" ファイルを生成しません。この値は "-B" コマンドライ
   ンオプションと "PYTHONDONTWRITEBYTECODE" 環境変数の値によって起動時
   に "True" か "False" に設定されます。しかし、実行時にこの変数を変更
   して、バイトコード生成を制御することもできます。

   バージョン 2.6 で追加.

sys.excepthook(type, value, traceback)

   指定したトレースバックと例外を "sys.stderr" に出力します。

   例外が発生し、その例外が捕捉されない場合、インタプリタは例外クラス
   ・例外インスタンス・トレースバックオブジェクトを引数として
   "sys.excepthook" を呼び出します。対話セッション中に発生した場合はプ
   ロンプトに戻る直前に呼び出され、Pythonプログラムの実行中に発生した
   場合はプログラムの終了直前に呼び出されます。このトップレベルでの例
   外情報出力処理をカスタマイズする場合、 "sys.excepthook" に引数の数
   が三つの関数を指定します。

sys.__displayhook__
sys.__excepthook__

   それぞれ、起動時の "displayhook" と "excepthook" の値を保存していま
   す。この値は、 "displayhook" と "excepthook" に不正なオブジェクトが
   指定された場合に、元の値に復旧するために使用します。

sys.exc_info()

   この関数は、現在処理中の例外を示す三つの値のタプルを返します。この
   値は、現在のスレッド・現在のスタックフレームのものです。現在のスタ
   ックフレームが例外処理中でない場合、例外処理中のスタックフレームが
   見つかるまで次々とその呼び出し元スタックフレームを調べます。ここで
   、"例外処理中" とは "except 節を実行中、または実行した" フレームを
   指します。どのスタックフレームでも、最後に処理した例外の情報のみを
   参照することができます。

   スタック上で例外が発生していない場合、三つの "None" のタプルを返し
   ます。例外が発生している場合、 "(type, value, traceback)" を返しま
   す。 *type* は、処理中の例外の型を示します (クラスオブジェクト)。
   *value* は、例外パラメータ (例外に *関連する値* または "raise" の第
   二引数。 *type* がクラスオブジェクトの場合は常にクラスインスタンス)
   です。 *traceback* は、トレースバックオブジェクトで、例外が発生した
   時点でのコールスタックをカプセル化したオブジェクトです(リファレンス
   マニュアル参照)。

   "exc_clear()" が呼び出されると、現在のスレッドで他の例外が発生する
   か、又は別の例外を処理中のフレームに実行スタックが復帰するまで、
   "exc_info()" は三つの "None" を返します。

   警告: 例外処理中に戻り値の *traceback* をローカル変数に代入すると
     循環参 照が発生し、関数内のローカル変数やトレースバックが参照して
     いる全 てのオブジェクトは解放されなくなります。特にトレースバック
     情報が 必要ではなければ "exctype, value = sys.exc_info()[:2]" の
     ように例 外型と例外オブジェクトのみを取得するようにして下さい。も
     しトレー スバックが必要な場合には、処理終了後にdeleteして下さい。
     この deleteは、 "try" ... "finally" ...で行うと良いでしょう。

   注釈: Python 2.2 以降では、ガベージコレクションが有効であればこの
     ような 到達不能オブジェクトは自動的に削除されます。しかし、循環参
     照を作 らないようにしたほうが効率的です。

sys.exc_clear()

   この関数は、現在のスレッドで処理中、又は最後に発生した例外の情報を
   全てクリアします。この関数を呼び出すと、現在のスレッドで他の例外が
   発生するか、又は別の例外を処理中のフレームに実行スタックが復帰する
   まで、 "exc_info()" は三つの "None" を返します。

   この関数が必要となることは滅多にありません。ロギングやエラー処理な
   どで最後に発生したエラーの報告を行う場合などに使用します。また、リ
   ソースを解放してオブジェクトの終了処理を起動するために使用すること
   もできますが、オブジェクトが実際にされるかどうかは保障の限りではあ
   りません。

   バージョン 2.3 で追加.

sys.exc_type
sys.exc_value
sys.exc_traceback

   バージョン 1.5 で非推奨: "exc_info()" を使用してください

   これらの変数はグローバル変数なのでスレッド毎の情報を示すことができ
   ません。この為、マルチスレッドなプログラムでは安全に参照することは
   できません。例外処理中でない場合、 "exc_type" の値は "None" となり
   、 "exc_value" と "exc_traceback" は未定義となります。

sys.exec_prefix

   Python のプラットフォーム依存なファイルがインストールされているディ
   レクトリ名(サイト固有)。デフォルトでは、この値は "'/usr/local'" で
   すが、ビルド時に **configure** の "--exec-prefix" 引数で指定するこ
   とができます。全ての設定ファイル("pyconfig.h" など)は
   "*exec_prefix*/lib/python*X.Y*/config" に、共有ライブラリは
   "*exec_prefix*/lib/python*X.Y*/lib-dynload" にインストールされます
   。 *X.Y* は Python のバージョン番号で、例えば "2.7" です。

sys.executable

   Python インタプリタの実行ファイルの絶対パスを示す文字列です。このよ
   うな名前が意味を持つシステムで利用可能です。Python が自身の実行ファ
   イルの実際のパスを取得できない場合、"sys.executable" は空の文字列ま
   たは "None" になります。

sys.exit([arg])

   Python を終了します。 "exit()" は "SystemExit" を送出するので、
   "try" ステートメントの "finally" 節に終了処理を記述したり、上位レベ
   ルで例外を捕捉して exit 処理を中断したりすることができます。

   オプション引数 *arg* には、終了ステータスとして整数 (デフォルトは0)
   や他の型のオブジェクトを指定することができます。整数を指定した場合
   、シェル等は 0 は "正常終了"、0 以外の整数を "異常終了" として扱い
   ます。多くのシステムでは、有効な終了ステータスは 0--127 で、これ以
   外の値を返した場合の動作は未定義です。システムによっては特定の終了
   コードに個別の意味を持たせている場合がありますが、このような定義は
   僅かしかありません。Unix プログラムでは構文エラーの場合には 2 を、
   それ以外のエラーならば 1 を返します。*arg* に "None" を指定した場合
   は、数値の 0 を指定した場合と同じです。それ以外の型のオブジェクトを
   指定すると、そのオブェクトが "stderr" に出力され、終了コードとして
   1 を返します。エラー発生時には "sys.exit("エラーメッセージ")" と書
   くと、簡単にプログラムを終了することができます。

   究極には、 "exit()" は例外を送出する "だけ" なので、これがメインス
   レッドから呼び出されたときは、プロセスを終了するだけで、例外は遮断
   されません。

sys.exitfunc

   この値はモジュールに存在しませんが、ユーザプログラムでプログラム終
   了時に呼び出される終了処理関数として、引数の数が 0 の関数を設定する
   ことができます。この関数は、インタプリタ終了時に呼び出されます。
   "exitfunc" に指定することができる終了処理関数は一つだけですので、複
   数のクリーンアップ処理が必要な場合は "atexit" モジュールを使用して
   ください。

   注釈: プログラムがシグナルで kill された場合、 Python 内部で致命
     的なエ ラーが発生した場合、 "os._exit()" が呼び出された場合には、
     終了処 理関数は呼び出されません。

   バージョン 2.4 で非推奨: "atexit" を使ってください。

sys.flags

   属性とシーケンスを利用して、コマンドラインフラグの状態を提供してい
   ます。属性は読み込み専用になっています。

   +-------------------------------+-------------------------------------+
   | 属性                          | フラグ                              |
   |===============================|=====================================|
   | "debug"                       | "-d"                                |
   +-------------------------------+-------------------------------------+
   | "py3k_warning"                | "-3"                                |
   +-------------------------------+-------------------------------------+
   | "division_warning"            | "-Q"                                |
   +-------------------------------+-------------------------------------+
   | "division_new"                | "-Qnew"                             |
   +-------------------------------+-------------------------------------+
   | "inspect"                     | "-i"                                |
   +-------------------------------+-------------------------------------+
   | "interactive"                 | "-i"                                |
   +-------------------------------+-------------------------------------+
   | "optimize"                    | "-O" または "-OO"                   |
   +-------------------------------+-------------------------------------+
   | "dont_write_bytecode"         | "-B"                                |
   +-------------------------------+-------------------------------------+
   | "no_user_site"                | "-s"                                |
   +-------------------------------+-------------------------------------+
   | "no_site"                     | "-S"                                |
   +-------------------------------+-------------------------------------+
   | "ignore_environment"          | "-E"                                |
   +-------------------------------+-------------------------------------+
   | "tabcheck"                    | "-t" または "-tt"                   |
   +-------------------------------+-------------------------------------+
   | "verbose"                     | "-v"                                |
   +-------------------------------+-------------------------------------+
   | "unicode"                     | "-U"                                |
   +-------------------------------+-------------------------------------+
   | "bytes_warning"               | "-b"                                |
   +-------------------------------+-------------------------------------+
   | "hash_randomization"          | "-R"                                |
   +-------------------------------+-------------------------------------+

   バージョン 2.6 で追加.

   バージョン 2.7.3 で追加: "hash_randomization" 属性が追加されました
   。

sys.float_info

   属性とシーケンスを利用して、 float 型に関する情報を提供します。精度
   と内部表現に関する情報を含みます。プログラミング言語 'C' の標準ヘッ
   ダファイル "float.h" に定義された様々な浮動小数点定数に対応する値の
   詳細については、1999 ISO/IEC C standard [C99] の 4.2.4.2.2 章を参照
   して下さい。

   +-----------------------+------------------+----------------------------------------------------+
   | 属性                  | float.h のマクロ | 説明                                               |
   |=======================|==================|====================================================|
   | "epsilon"             | DBL_EPSILON      | 1と、その次の表現可能なfloat値の差                 |
   +-----------------------+------------------+----------------------------------------------------+
   | "dig"                 | DBL_DIG          | 浮動小数点数で正確に表示できる最大の10進数桁; 以下 |
   |                       |                  | 参照                                               |
   +-----------------------+------------------+----------------------------------------------------+
   | "mant_dig"            | DBL_MANT_DIG     | 浮動小数点精度: 浮動小数点数の主要部の桁           |
   |                       |                  | base-"radix"                                       |
   +-----------------------+------------------+----------------------------------------------------+
   | "max"                 | DBL_MAX          | floatが表せる最大の(infiniteではない)値            |
   +-----------------------+------------------+----------------------------------------------------+
   | "max_exp"             | DBL_MAX_EXP      | floatが "radix**(e-1)" で表現可能な、最大の整数 e  |
   +-----------------------+------------------+----------------------------------------------------+
   | "max_10_exp"          | DBL_MAX_10_EXP   | float が "10**e" で表現可能な、最大の整数 e        |
   +-----------------------+------------------+----------------------------------------------------+
   | "min"                 | DBL_MIN          | float が表現可能な最小の正の値                     |
   +-----------------------+------------------+----------------------------------------------------+
   | "min_exp"             | DBL_MIN_EXP      | "radix**(e-1)" が正規化floatであるような最小の整数 |
   |                       |                  | e                                                  |
   +-----------------------+------------------+----------------------------------------------------+
   | "min_10_exp"          | DBL_MIN_10_EXP   | "10**e" が正規化floatであるような最小の整数 e      |
   +-----------------------+------------------+----------------------------------------------------+
   | "radix"               | FLT_RADIX        | 指数部の基数                                       |
   +-----------------------+------------------+----------------------------------------------------+
   | "rounds"              | FLT_ROUNDS       | 算術演算で利用される丸めモードを表す整数定数。これ |
   |                       |                  | はインタプリタ起 動時のシステムの FLT_ROUNDS マク  |
   |                       |                  | ロの値を示します。取りうる値とその 意味については  |
   |                       |                  | 、C99 標準の 5.2.4.2.2 節を参照してください。      |
   +-----------------------+------------------+----------------------------------------------------+

   "sys.float_info.dig" に対してはさらに説明が必要です。もし、文字列
   "s" が表す 10 進数の有効桁数が多くても "sys.float_info.dig" の時に
   は、 "s" を浮動小数点数に変換して戻すと同じ 10 進数を表す文字列に復
   元されます:

      >>> import sys
      >>> sys.float_info.dig
      15
      >>> s = '3.14159265358979'    # decimal string with 15 significant digits
      >>> format(float(s), '.15g')  # convert to float and back -> same value
      '3.14159265358979'

   ただし、文字列が有効桁数 "sys.float_info.dig" より大きい場合には、
   常に復元されるとは限りません:

      >>> s = '9876543211234567'    # 16 significant digits is too many!
      >>> format(float(s), '.16g')  # conversion changes value
      '9876543211234568'

   バージョン 2.6 で追加.

sys.float_repr_style

   "repr()" 関数が浮動小数点数に対してどう振る舞うかを指し示す文字列で
   す。この文字列が値 "'short'" を持てば、有限の浮動小数点数 "x" に対
   して、 "repr(x)" は "float(repr(x)) == x" を満たす短い文字列を返そ
   うとします。これは、 Python 2.7 以降での標準の振る舞いです。そうで
   なければ、 "float_repr_style" は値 "'legacy'" を持ち、 "repr(x)" は
   2.7 以前のバージョンの Python と同じように振る舞います。

   バージョン 2.7 で追加.

sys.getcheckinterval()

   インタプリタの "チェックインターバル (check interval)" を返します;
   "setcheckinterval()" を参照してください。

   バージョン 2.3 で追加.

sys.getdefaultencoding()

   Unicode 実装で使用される現在のデフォルトエンコーディング名を返しま
   す。

   バージョン 2.0 で追加.

sys.getdlopenflags()

   "dlopen()" で指定されるフラグを返します。このフラグは "dl" と
   "DLFCN" で定義されています。

   バージョン 2.2 で追加.

sys.getfilesystemencoding()

   Unicode ファイル名をシステムのファイル名に変換する際に使用するエン
   コード名を返します。システムのデフォルトエンコーディングを使用する
   場合には "None" を返します。

   * Mac OS X では、エンコーディングは "'utf-8'" となります。

   * Unix では、エンコーディングは "nl_langinfo(CODESET)" が返すユー
     ザ の設定となります。 "nl_langinfo(CODESET)" が失敗すると "None"
     を 返します。

   * Windows NT+ では、Unicode をファイル名として使用できるので変換
     の 必要はありません。"getfilesystemencoding()" は "'mbcs'" を返し
     ま すが、これはある Unicode 文字列をバイト文字列に明示的に変換し
     て、 ファイル名として使うと同じファイルを指すようにしたい場合に、
     アプ リケーションが使わなければならないエンコーディングです。

   * Windows 9x では、エンコーディングは "'mbcs'" となります。

   バージョン 2.3 で追加.

sys.getrefcount(object)

   *object* の参照数を返します。 *object* は (一時的に)
   "getrefcount()" からも参照されるため、参照数は予想される数よりも 1
   多くなります。

sys.getrecursionlimit()

   現在の最大再帰数を返します。最大再帰数は、Python インタプリタスタッ
   クの最大の深さです。この制限は Python プログラムが無限に再帰し、C
   スタックがオーバーフローしてクラッシュすることを防止するために設け
   られています。この値は "setrecursionlimit()" で指定することができま
   す。

sys.getsizeof(object[, default])

   *object* のサイズをバイト数で返します。*object* は任意の型のオブジ
   ェクトです。すべての組み込みオブジェクトは正しい値を返します。サー
   ドパーティー製の型については実装依存になります。

   オブジェクトがサイズを取得する手段を提供していない時は *default* が
   返されます。*default* が指定されていない場合は "TypeError" が送出さ
   れます。

   "getsizeof()" は *object* の "__sizeof__" メソッドを呼び出し、その
   オブジェクトがガベージコレクタに管理されていた場合はガベージコレク
   タのオーバーヘッドを増やします。

   バージョン 2.6 で追加.

sys._getframe([depth])

   コールスタックからフレームオブジェクトを返します。オプション引数
   *depth* を指定すると、スタックのトップから *depth* だけ下のフレーム
   オブジェクトを取得します。 *depth* がコールスタックよりも深ければ、
   "ValueError" が発生します。 *depth* のデフォルト値は 0 で、この場合
   はコールスタックのトップのフレームを返します。

   この関数は、内部的かつ特殊な目的にのみ利用されるべきです。全ての
   Python 実装で存在することが保証されているわけではありません。

sys.getprofile()

   "setprofile()" 関数で設定したプロファイラ関数を取得します。

   バージョン 2.6 で追加.

sys.gettrace()

   "settrace()" 関数で設定したトレース関数を取得します。

   "gettrace()" 関数は、デバッガ、プロファイラ、カバレッジツールなどの
   実装に使うことのみを想定しています。この関数の振る舞いは言語定義で
   はなく実装プラットフォームの一部です。そのため、他の Python 実装で
   は利用できないかもしれません。

   バージョン 2.6 で追加.

sys.getwindowsversion()

   実行中の Windows バージョンを示す、名前付きタプルを返します。名前付
   けされた要素は、 *major*, *minor*, *build*, *platform*,
   *service_pack*, *service_pack_minor*, *service_pack_major*,
   *suite_mask*, および *product_type* です。 *service_pack* は、文字
   列を含み、それ以外は整数です。この構成要素には名前でもアクセスでき
   るので、 "sys.getwindowsversion()[0]" は
   "sys.getwindowsversion().major" と等価です。先行のバージョンとの互
   換性のため、最初の 5 要素がインデクシングで得られます。

   *platform* は、以下の値となります:

   +-------------------------------------------+---------------------------+
   | 定数                                      | プラットフォーム          |
   |===========================================|===========================|
   | "0 (VER_PLATFORM_WIN32s)"                 | Win32s on Windows 3.1     |
   +-------------------------------------------+---------------------------+
   | "1 (VER_PLATFORM_WIN32_WINDOWS)"          | Windows 95/98/ME          |
   +-------------------------------------------+---------------------------+
   | "2 (VER_PLATFORM_WIN32_NT)"               | Windows NT/2000/XP/x64    |
   +-------------------------------------------+---------------------------+
   | "3 (VER_PLATFORM_WIN32_CE)"               | Windows CE                |
   +-------------------------------------------+---------------------------+

   *product_type* は、以下の値のいずれかになります。:

   +-----------------------------------------+-----------------------------------+
   | 定数                                    | 意味                              |
   |=========================================|===================================|
   | "1 (VER_NT_WORKSTATION)"                | システムはワークステーションです  |
   |                                         | 。                                |
   +-----------------------------------------+-----------------------------------+
   | "2 (VER_NT_DOMAIN_CONTROLLER)"          | システムはドメインコントローラで  |
   |                                         | す。                              |
   +-----------------------------------------+-----------------------------------+
   | "3 (VER_NT_SERVER)"                     | システムはサーバですが、ドメイン  |
   |                                         | コントローラではありません。      |
   +-----------------------------------------+-----------------------------------+

   この関数は、Win32 "GetVersionEx()" 関数を呼び出します。これらのフィ
   ールドに関する詳細は "OSVERSIONINFOEX()" についてのマイクロソフトの
   ドキュメントを参照してください。

   利用出来る環境: Windows.

   バージョン 2.3 で追加.

   バージョン 2.7 で変更: 名前付きタプルに変更され、
   *service_pack_minor*, *service_pack_major*, *suite_mask*, および
   *product_type* が追加されました。

sys.hexversion

   単精度整数にエンコードされたバージョン番号。この値は新バージョン(正
   規リリース以外であっても)ごとにかならず増加します。例えば、Python
   1.5.2 以降でのみ動作するプログラムでは、以下のようなチェックを行い
   ます。

      if sys.hexversion >= 0x010502F0:
          # use some advanced feature
          ...
      else:
          # use an alternative implementation or warn the user
          ...

   "hexversion" は "hex()" で16進数に変換しなければ値の意味がわかりま
   せん。より読みやすいバージョン番号が必要な場合には "version_info"
   を使用してください。

   "hexversion" は以下のレイアウトで表される 32-bit 数です:

   +---------------------------+--------------------------------------------------+
   | ビット (ビッグエンディア  | 意味                                             |
   | ンオーダ)                 |                                                  |
   |===========================|==================================================|
   | "1-8"                     | "PY_MAJOR_VERSION" ("2.1.0a3" の "2")            |
   +---------------------------+--------------------------------------------------+
   | "9-16"                    | "PY_MINOR_VERSION" ("2.1.0a3" の "1")            |
   +---------------------------+--------------------------------------------------+
   | "17-24"                   | "PY_MICRO_VERSION" ("2.1.0a3" の "0")            |
   +---------------------------+--------------------------------------------------+
   | "25-28"                   | "PY_RELEASE_LEVEL" (アルファでは "0xA" 、ベータ  |
   |                           | では "0xB" 、リリー ス候補では "0xC" 、そして最  |
   |                           | 終版は "0xF")                                    |
   +---------------------------+--------------------------------------------------+
   | "29-32"                   | "PY_RELEASE_SERIAL" (the "3" in "2.1.0a3" の "0" |
   |                           | 、最終リリースでは 0)                            |
   +---------------------------+--------------------------------------------------+

   従って、 "2.1.0a3" は hexversion で "0x020100a3" です。

   バージョン 1.5.2 で追加.

sys.long_info

   Python における整数の内部表現に関する情報を保持する、構造体のシーケ
   ンスです。この属性は読み込み専用です。

   +---------------------------+------------------------------------------------+
   | 属性                      | 説明                                           |
   |===========================|================================================|
   | "bits_per_digit"          | 各桁に保持されるビットの数です。Python の整数  |
   |                           | は、内部的に "2**long_info.bits_per_digit" を  |
   |                           | 基数として保存されます。                       |
   +---------------------------+------------------------------------------------+
   | "sizeof_digit"            | 桁を表すために使われる、C 型の大きさ (バイト)  |
   |                           | です                                           |
   +---------------------------+------------------------------------------------+

   バージョン 2.7 で追加.

sys.last_type
sys.last_value
sys.last_traceback

   通常は定義されておらず、捕捉されない例外が発生してインタプリタがエ
   ラーメッセージとトレースバックを出力した場合にのみ設定されます。こ
   の値は、対話セッション中にエラーが発生したとき、デバッグモジュール
   をロード (例:"import pdb; pdb.pm()" など。詳細は pdb --- Python デ
   バッガ を参照)して発生したエラーを調査する場合に利用します。デバッ
   ガをロードすると、プログラムを再実行せずに情報を取得することができ
   ます。

   変数の意味は、上の "exc_info()" の戻り値と同じです。対話セッション
   を実行するスレッドは常に1つだけなので、 "exc_type" のようにスレッド
   に関する問題は発生しません。

sys.maxint

   Pythonの整数型でサポートされる、最大の整数。この値は最低でも
   2**31-1 です。最大の負数は "-maxint-1" となります。正負の最大数が非
   対称ですが、これは 2 の補数計算を行うためです。

sys.maxsize

   プラットフォームの Py_ssize_t 型がサポートしている最大の正の整数。
   したがって、リスト、文字列、辞書、その他コンテナ型の最大のサイズ。

sys.maxunicode

   Unicode 文字の最大のコードポイントを示す整数。この値は、オプション
   設定で Unicode 文字の保存形式として USC-2 と UCS-4 のいずれを指定し
   たかによって異なります。

sys.meta_path

   *finder* オブジェクトのリストです。*finder* オブジェクトの
   "find_module()" メソッドは、インポートするモジュールを探すために呼
   び出されます。インポートするモジュールがパッケージに含まれる場合、
   親パッケージの "__path__" 属性が第 2 引数として渡されます。そのメソ
   ッドは、モジュールが見つからなかった場合は "None" を、見つかった場
   合は *loader* を返します。

   "sys.meta_path" は、デフォルトの暗黙の finder や、 "sys.path" より
   も先に検索されます。

   オリジナルの仕様については、 **PEP 302** を参照してください。

sys.modules

   ロード済みモジュールのモジュール名とモジュールオブジェクトの辞書。
   強制的にモジュールを再読み込みする場合などに使用します。この辞書か
   らモジュールを削除するのは、 "reload()" の呼び出しと等価では *あり
   ません* 。

sys.path

   モジュールを検索するパスを示す文字列のリスト。 "PYTHONPATH" 環境変
   数と、インストール時に指定したデフォルトパスで初期化されます。

   起動時に初期化された後、リストの先頭 ("path[0]") には Python インタ
   プリタを起動したスクリプトのあるディレクトリが挿入されます。スクリ
   プトのディレクトリがない (インタプリタが対話セッションで起動された
   時や、スクリプトを標準入力から読み込んだ場合など) 場合、 "path[0]"
   は空文字列となり、Python はカレントディレクトリからモジュールの検索
   を開始します。スクリプトディレクトリは、 "PYTHONPATH" で指定したデ
   ィレクトリの *前* に挿入されますので注意が必要です。

   必要に応じて、プログラム内で自由に変更することができます。

   バージョン 2.3 で変更: Unicode 文字列が無視されなくなりました.

   参考: "site" モジュールのドキュメントで、 .pth ファイルを使って
     "sys.path" を拡張する方法を解説しています。

sys.path_hooks

   path を引数にとって、その path に対する *finder* の作成を試みる呼び
   出し可能オブジェクトのリスト。 finder の作成に成功したら、その呼出
   可能オブジェクトのは finder を返します。失敗した場合は、
   "ImportError" を発生させます。

   オリジナルの仕様は **PEP 302** を参照してください。

sys.path_importer_cache

   *finder* オブジェクトのキャッシュとなる辞書。キーは
   "sys.path_hooks" に渡される path で、値は見つかった finder オブジェ
   クト。 path が有効なファイルシステムパスであり、かつ finder が
   "sys.path_hooks" から見つからない場合、暗黙のデフォルト finder を利
   用するという意味で "None" が格納されます。 path が既存のパスではな
   い場合、 "imp.NullImporter" が格納されます。

   オリジナルの仕様は **PEP 302** を参照してください。

sys.platform

   プラットフォームを識別する文字列で、"sys.path" にプラットフォーム固
   有のサブディレクトリを追加する場合などに利用します。

   Unix システムでは、この値は "uname -s" が返す小文字のOS名を前半に、
   "uname -r" が返すバージョン名を後半に追加したものになります。例えば
   、 "'sunos5'" や "'linux2'" といった具合です。 *この値はPythonをビ
   ルドした時のものです* 。それ以外のシステムでは、次のような値になり
   ます。

      if sys.platform.startswith('freebsd'):
          # FreeBSD-specific code here...
      elif sys.platform.startswith('linux'):
          # Linux-specific code here...

   バージョン 2.7.3 で変更: たくさんのコードが "sys.platform ==
   'linux2'" をチェックし、そして Linux 2.x と 3.x との間には本質的な
   違いもないことから、 "sys.platform" は Linux 3.x でさえも常に
   "'linux2'" をセットしています。Python 3.3 とそれ以降ではこの値は常
   に "'linux'" ですので、 "startswith" イディオムを常に使うことをお奨
   めします。

   その他のシステムでは以下の値になります:

   +-----------------------+-----------------------------+
   | システム              | "platform" の値             |
   |=======================|=============================|
   | Linux (2.x *と* 3.x)  | "'linux2'"                  |
   +-----------------------+-----------------------------+
   | Windows               | "'win32'"                   |
   +-----------------------+-----------------------------+
   | Windows/Cygwin        | "'cygwin'"                  |
   +-----------------------+-----------------------------+
   | Mac OS X              | "'darwin'"                  |
   +-----------------------+-----------------------------+
   | OS/2                  | "'os2'"                     |
   +-----------------------+-----------------------------+
   | OS/2 EMX              | "'os2emx'"                  |
   +-----------------------+-----------------------------+
   | RiscOS                | "'riscos'"                  |
   +-----------------------+-----------------------------+
   | AtheOS                | "'atheos'"                  |
   +-----------------------+-----------------------------+

   参考: "os.name" が持つ情報はおおざっぱな括りであり、"os.uname()"
     はシス テムに依存したバージョン情報になります。

     "platform" モジュールはシステムの詳細な識別情報をチェックする機能
     を提供しています。

sys.prefix

   Python のプラットフォームに依存しないファイルがインストールされてい
   るディレクトリ名(サイト固有)。デフォルトでは、この値は
   "'/usr/local'" ですが、ビルド時に **configure** の "--prefix" 引数
   で指定することができます。Python ライブラリの主要なコレクションは
   "*prefix*/lib/python*X.Y*" に、プラットフォーム非依存のヘッダファイ
   ル ("pyconfig.h" を除く全て) は "*prefix*/include/python*X.Y*" にイ
   ンストールされます。 *X.Y* は Python のバージョン番号で、例えば
   "2.7" です。

sys.ps1
sys.ps2

   インタプリタの一次プロンプト、二次プロンプトを指定する文字列。対話
   モードで実行中のみ定義され、初期値は "'>>> '" と "'... '" です。文
   字列以外のオブジェクトを指定した場合、インタプリタが対話コマンドを
   読み込むごとにオブジェクトの "str()" を評価します。この機能は、動的
   に変化するプロンプトを実装する場合に利用します。

sys.py3kwarning

   Python 3 warning flag の状態を格納する Bool 値。 Python が -3 オプ
   ションを付けて起動された場合は "True" になります。 (この値は定数と
   して扱ってください。この変数を変更しても、Python 3 warning の動作に
   は影響しません)

   バージョン 2.6 で追加.

sys.setcheckinterval(interval)

   インタプリタの "チェック間隔" を示す整数値を指定します。この値はス
   レッドスイッチやシグナルハンドラのチェックを行う周期を決定します。
   デフォルト値は "100" で、この場合 100 の Python 仮想命令を実行する
   とチェックを行います。この値を大きくすればスレッドを利用するプログ
   ラムのパフォーマンスが向上します。この値が 0 "以下" の場合、各仮想
   命令を実行するたびにチェックを行い、レスポンス速度が最大になります
   がオーバヘッドもまた最大となります。

sys.setdefaultencoding(name)

   現在の Unicode 処理のデフォルトエンコーディング名を設定します。
   *name* に一致するエンコーディングが見つからない場合、 "LookupError"
   が発生します。この関数は、 "site" モジュールの実装が、
   "sitecustomize" モジュールから使用するためだけに定義されています。
   "site" から呼び出された後、この関数は "sys" から削除されます。

   バージョン 2.0 で追加.

sys.setdlopenflags(n)

   インタプリタが拡張モジュールをロードする時、 "dlopen()" で使用する
   フラグを設定します。 "sys.setdlopenflags(0)" とすれば、モジュールイ
   ンポート時にシンボルの遅延解決を行う事ができます。シンボルを拡張モ
   ジュール間で共有する場合には、 "sys.setdlopenflags(dl.RTLD_NOW |
   dl.RTLD_GLOBAL)" と指定します。フラグの定義名は "dl" か "DLFCN" で
   定義されています。 "DLFCN" が存在しない場合、 **h2py** スクリプトを
   使って "/usr/include/dlfcn.h" から生成することができます。

   バージョン 2.2 で追加.

sys.setprofile(profilefunc)

   Set the system's profile function, which allows you to implement a
   Python source code profiler in Python.  See chapter Python プロファ
   イラ for more information on the Python profiler.  The system's
   profile function is called similarly to the system's trace function
   (see "settrace()"), but it is called with different events, for
   example it isn't called for each executed line of code (only on
   call and return, but the return event is reported even when an
   exception has been set). The function is thread-specific, but there
   is no way for the profiler to know about context switches between
   threads, so it does not make sense to use this in the presence of
   multiple threads. Also, its return value is not used, so it can
   simply return "None".

   Profile functions should have three arguments: *frame*, *event*,
   and *arg*. *frame* is the current stack frame.  *event* is a
   string: "'call'", "'return'", "'c_call'", "'c_return'", or
   "'c_exception'". *arg* depends on the event type.

   *event* には以下の意味があります。

   "'call'"
      A function is called (or some other code block entered).  The
      profile function is called; *arg* is "None".

   "'return'"
      A function (or other code block) is about to return.  The
      profile function is called; *arg* is the value that will be
      returned, or "None" if the event is caused by an exception being
      raised.

   "'c_call'"
      C 関数(拡張関数かビルトイン関数)が呼ばれようとしている。 *arg*
      は C 関数オブジェクト。

   "'c_return'"
      C 関数から戻った。 *arg* は C の関数オブジェクト。

   "'c_exception'"
      C 関数が例外を発生させた。 *arg* は C の関数オブジェクト。

sys.setrecursionlimit(limit)

   Python インタプリタの、スタックの最大の深さを *limit* に設定します
   。この制限は Python プログラムが無限に再帰し、 C スタックがオーバー
   フローしてクラッシュすることを防止するために設けられています。

   *limit* の最大値はプラットフォームによって異なります。深い再帰処理
   が必要な場合にはプラットフォームがサポートしている範囲内でより大き
   な値を指定することができますが、この値が大きすぎればクラッシュする
   ので注意が必要です。

sys.settrace(tracefunc)

   システムのトレース関数を登録します。トレース関数は Python のソース
   デバッガを実装するために使用できます。トレース関数はスレッド毎に設
   定することができるので、デバッグを行うすべてのスレッドで
   "settrace()" を呼び出し、トレース関数を登録してください。

   Trace functions should have three arguments: *frame*, *event*, and
   *arg*. *frame* is the current stack frame.  *event* is a string:
   "'call'", "'line'", "'return'" or "'exception'".  *arg* depends on
   the event type.

   trace 関数は (*event* に "'call'" を渡された状態で) 新しいローカル
   スコープに入るたびに呼ばれます。この場合、そのスコープで利用するロ
   ーカルの trace 関数への参照か、そのスコープを trace しないのであれ
   ば "None" を返します。

   ローカル trace 関数は自身への参照 (もしくはそのスコープの以降の
   trace を行う別の関数) を返すべきです。もしくは、そのスコープの
   trace を止めるために "None" を返します。

   *event* には以下の意味があります。

   "'call'"
      関数が呼び出された(もしくは、何かのコードブロックに入った)。グロ
      ーバルの trace 関数が呼ばれる。 *arg* は "None" が渡される。戻り
      値はローカルの trace 関数。

   "'line'"
      インタプリタがコードの新しい行を実行しようとしている、または、ル
      ープの条件で再実行しようとしている。ローカルの trace 関数が呼ば
      れる。*arg* は "None" 。返り値は新しいローカルの trace 関数。こ
      れがどのように動作するかの詳細な説明は、
      "Objects/lnotab_notes.txt" を参照のこと。

   "'return'"
      関数(あるいは別のコードブロック)から戻ろうとしている。ローカルの
      trace 関数が呼ばれる。 *arg* は返されようとしている値、または、
      このイベントが例外が送出されることによって起こったなら "None" 。
      trace 関数の戻り値は無視される。

   "'exception'"
      例外が発生した。ローカルの trace 関数が呼ばれる。 *arg* は
      "(exception, value, traceback)" のタプル。戻り値は新しいローカル
      の trace 関数。

   例外が呼び出しチェインを辿って伝播していくことに注意してください。
   "'exception'" イベントは各レベルで発生します。

   code と frame オブジェクトについては、 標準型の階層 を参照してくだ
   さい。

   "settrace()" 関数は、デバッガ、プロファイラ、カバレッジツール等で使
   うためだけのものです。この関数の挙動は言語定義よりも実装プラットフ
   ォームの分野の問題で、全ての Python 実装で利用できるとは限りません
   。

sys.settscdump(on_flag)

   *on_flag* が真の場合、Pentium タイムスタンプカウンタを使った VM 計
   測結果のダンプ出力を有効にします。 *on_flag* をオフにするとダンプ出
   力を無効化します。この関数は Python を "--with-tsc" つきでコンパイ
   ルしたときにのみ利用できます。ダンプの内容を理解したければ、 Python
   ソースコード中の "Python/ceval.c" を読んでください。

   バージョン 2.4 で追加.

   この関数は CPython の実装の詳細に密接に結びついています、そのため他
   の Python 実装では実装されていないでしょう。

sys.stdin
sys.stdout
sys.stderr

   インタプリタの標準入力・標準出力・標準エラー出力に対応するファイル
   オブジェクト。 "stdin" はスクリプトの読み込みを除く全ての入力処理で
   使用され、 "input()" や "raw_input()" も "stdin" から読み込みます。
   "stdout" は、 "print" や式(*expression*)の評価結果、 "input()",
   "raw_input()" のプロンプトの出力先となります。インタプリタのプロン
   プトは(ほとんど) "stderr" に出力されます。 "stdout" と "stderr" は
   必ずしも組み込みのファイルオブジェクトである必要はなく、 "write()"
   メソッドを持つオブジェクトであれば使用することができます。 "stdout"
   と "stderr" を別のオブジェクトに置き換えても、 "os.popen()",
   "os.system()", "os" の "exec*()" などから起動されたプロセスが使用す
   る標準 I/O ストリームは変更されません。

sys.__stdin__
sys.__stdout__
sys.__stderr__

   それぞれ起動時の "stdin", "stderr", "stdout" の値を保存しています。
   終了処理時に利用されます。また、 "sys.std*" オブジェクトが(訳注:別
   のファイルライクオブジェクトに)リダイレクトされている場合でも、実際
   の標準ストリームへの出力に利用できます。

   また、標準ストリームが壊れたオブジェクトに置き換えられた場合に、動
   作する実際のファイルを復元するために利用することもできます。しかし
   、明示的に置き換え前のストリームを保存しておき、そのオブジェクトを
   復元る事を推奨します。

sys.subversion

   3つ組 (repo, branch, version) で Python インタプリタの Subversion
   情報を表します。 *repo* はリポジトリの名前で、 "'CPython'" 。
   *branch* は "'trunk'", "'branches/name'" または "'tags/name'" のい
   ずれかの形式の文字列です。 *version* はもしインタプリタが
   Subversion のチェックアウトからビルドされたものならば "svnversion"
   の出力であり、リビジョン番号 (範囲) とローカルでの変更がある場合に
   は最後に 'M' が付きます。ツリーがエクスポートされたもの (または
   svnversion が取得できない) で、 branch がタグならば
   "Include/patchlevel.h" のリビジョンになります。それ以外の場合には
   "None" です。

   バージョン 2.5 で追加.

   注釈: Python is now developed using Git.  In recent Python 2.7
     bugfix releases, "subversion" therefore contains placeholder
     information.  It is removed in Python 3.3.

sys.tracebacklimit

   捕捉されない例外が発生した時、出力されるトレースバック情報の最大レ
   ベル数を指定する整数値(デフォルト値は "1000")。 "0" 以下の値が設定
   された場合、トレースバック情報は出力されず例外型と例外値のみが出力
   されます。

sys.version

   Python インタプリタのバージョン番号の他、ビルド番号や使用コンパイラ
   などの情報を示す文字列です。この文字列は Python 対話型インタプリタ
   が起動した時に表示されます。バージョン情報はここから抜き出さずに、
   "version_info" および "platform" が提供する関数を使って下さい。

sys.api_version

   使用中のインタプリタの C API バージョン。 Python と拡張モジュール間
   の不整合をデバッグする場合などに利用できます。

   バージョン 2.3 で追加.

sys.version_info

   バージョン番号を示す 5 要素タプル:*major*, *minor*, *micro*,
   *releaselevel*, *serial* 。 *releaselevel* 以外は全て整数です。
   *releaselevel* の値は、 "'alpha'", "'beta'", "'candidate'",
   "'final'" の何れかです。 Python 2.0 の "version_info" は、 "(2, 0,
   0, 'final', 0)" となります。構成要素には名前でもアクセスできるので
   、 "sys.version_info[0]" は "sys.version_info.major" と等価、などに
   なります。

   バージョン 2.0 で追加.

   バージョン 2.7 で変更: 構成する属性に名前をつけました。

sys.warnoptions

   この値は、warnings フレームワーク内部のみ使用され、変更することはで
   きません。詳細は "warnings" を参照してください。

sys.winver

   Windows プラットフォームで、レジストリのキーとなるバージョン番号。
   Python DLL の文字列リソース 1000 に設定されています。通常、この値は
   "version" の先頭三文字となります。この値は参照専用で、別の値を設定
   しても Python が使用するレジストリキーを変更することはできません。
   利用できる環境: Windows。

-[ 出典 ]-

[C99] ISO/IEC 9899:1999.  "Programming languages -- C."  この標
      準のパ ブリックドラフトが参照できます: http://www.open-
      std.org/jtc1/sc22/wg14/www/docs/n1256.pdf。
