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

======================================================================

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

sys.abiflags

   Python が標準的な "configure" でビルトされた POSIX システムにおいて
   、**PEP 3149** に記述された ABI フラグを含みます。

   バージョン 3.2 で追加.

sys.argv

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

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

sys.base_exec_prefix

   Python の起動中、"site.py" が実行される前、"exec_prefix" と同じ値が
   設定されます。仮想環境 で実行されたのでなければ、この値は変化しませ
   ん; "site.py" が仮想環境で使用されていると判断した場合、"prefix" お
   よび "exec_prefix" は仮想環境を示すよう変更され、"base_prefix" およ
   び "base_exec_prefix" は引き続き (仮想環境が作成された) ベースの
   Python インストール先を示します。

   バージョン 3.3 で追加.

sys.base_prefix

   Python の起動中、"site.py" が実行される前、"prefix" と同じ値が設定
   されます。仮想環境 で実行されたのでなければ、この値は変化しません;
   "site.py" が仮想環境で使用されていると検出した場合、"prefix" および
   "exec_prefix" は仮想環境を示すよう変更され、"base_prefix" および
   "base_exec_prefix" は引き続き (仮想環境が作成された) ベースの
   Python インストール先を示します。

   バージョン 3.3 で追加.

sys.byteorder

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

sys.builtin_module_names

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

sys.call_tracing(func, args)

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

sys.copyright

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

sys._clear_type_cache()

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

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

sys._current_frames()

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

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

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

sys._debugmallocstats()

   CPython のメモリアロケータの状態に関する低レベルの情報を標準エラー
   出力に出力します。

   Python が **configure** 時に --with-pydebug オプションを指定してビ
   ルドされている場合、負荷のかかる一貫性チェックも行います。

   バージョン 3.3 で追加.

   **CPython implementation detail:** この関数は CPython 固有です。正
   確な出力形式は定義されていませんし、変更されるかもしれません。

sys.dllhandle

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

sys.displayhook(value)

   *value* が "None" 以外の時、"repr(value)" を "sys.stdout" に出力し
   、"builtins._" に保存します。"repr(value)" がエラーハンドラを
   "sys.stdout.errors" (おそらく "'strict'") として
   "sys.stdout.encoding" にエンコードできない場合、エラーハンドラを
   "'backslashreplace'" として "sys.stdout.encoding" にエンコードしま
   す。

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

   擬似コード:

      def displayhook(value):
          if value is None:
              return
          # Set '_' to None to avoid recursion
          builtins._ = None
          text = repr(value)
          try:
              sys.stdout.write(text)
          except UnicodeEncodeError:
              bytes = text.encode(sys.stdout.encoding, 'backslashreplace')
              if hasattr(sys.stdout, 'buffer'):
                  sys.stdout.buffer.write(bytes)
              else:
                  text = bytes.decode(sys.stdout.encoding, 'strict')
                  sys.stdout.write(text)
          sys.stdout.write("\n")
          builtins._ = value

   バージョン 3.2 で変更: "UnicodeEncodeError" には
   "'backslashreplace'" エラーハンドラを指定してください。

sys.dont_write_bytecode

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

sys.excepthook(type, value, traceback)

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

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

sys.__displayhook__
sys.__excepthook__

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

sys.exc_info()

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

   スタック上で例外が発生していない場合、3 個の "None" 値のタプルを返
   します。例外が発生している場合、"(type, value, traceback)" を返しま
   す。*type* は処理中の例外の型 ("BaseException" のサブクラス)を示し
   ます。*value* は例外インスタンス (例外の型のインスタンス) を、
   *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* は "3.2" のような Python のバージョン番号)。

   注釈: 仮想環境 で起動されている場合、この値は "site.py" によって
     仮想環 境を示すよう変更されます。実際の Python のインストール先は
     "base_exec_prefix" から取得できます。

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()" は例外を送出する "だけ" なので、これがメインス
   レッドから呼び出されたときは、プロセスを終了するだけで、例外は遮断
   されません。

   バージョン 3.6 で変更: Python インタープリタが (バッファされたデー
   タを標準ストリームに吐き出すときのエラーなどの) "SystemExit" を捕捉
   した後の後始末でエラーが起きた場合、終了ステータスは 120 に変更され
   ます。

sys.flags

   コマンドラインフラグの状態を表す *構造体シーケンス* です。各属性は
   読み出し専用になっています。

   +-------------------------------+-------------------------------+
   | 属性                          | フラグ                        |
   |===============================|===============================|
   | "debug"                       | "-d"                          |
   +-------------------------------+-------------------------------+
   | "inspect"                     | "-i"                          |
   +-------------------------------+-------------------------------+
   | "interactive"                 | "-i"                          |
   +-------------------------------+-------------------------------+
   | "isolated"                    | "-I"                          |
   +-------------------------------+-------------------------------+
   | "optimize"                    | "-O" または "-OO"             |
   +-------------------------------+-------------------------------+
   | "dont_write_bytecode"         | "-B"                          |
   +-------------------------------+-------------------------------+
   | "no_user_site"                | "-s"                          |
   +-------------------------------+-------------------------------+
   | "no_site"                     | "-S"                          |
   +-------------------------------+-------------------------------+
   | "ignore_environment"          | "-E"                          |
   +-------------------------------+-------------------------------+
   | "verbose"                     | "-v"                          |
   +-------------------------------+-------------------------------+
   | "bytes_warning"               | "-b"                          |
   +-------------------------------+-------------------------------+
   | "quiet"                       | "-q"                          |
   +-------------------------------+-------------------------------+
   | "hash_randomization"          | "-R"                          |
   +-------------------------------+-------------------------------+

   バージョン 3.2 で変更: 新しい "-q" 向けに "quiet" 属性が追加されま
   した。

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

   バージョン 3.3 で変更: 廃止済みの "division_warning" 属性を削除しま
   した。

   バージョン 3.4 で変更: "-I" "isolated" フラグ向けに "isolated" 属性
   が追加されました。

sys.float_info

   float 型に関する情報を保持している *構造体シーケンス* です。精度と
   内部表現に関する低レベル情報を含んでいます。これらの値は 'C' 言語の
   標準ヘッダファイル "float.h" で定義されている様々な浮動小数点定数に
   対応しています。詳細は 1999 ISO/IEC C standard [C99] の 5.2.4.2.2
   節 'Characteristics of floating types' を参照してください。

   +-----------------------+------------------+----------------------------------------------------+
   | 属性                  | 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'

sys.float_repr_style

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

   バージョン 3.1 で追加.

sys.getallocatedblocks()

   サイズに関わりなく、現在インタプリタから確保されたメモリブロックの
   数を返します。 この関数は主にメモリリークを追跡しバグを見付けるのに
   便利です。 インタプリタの内部的なキャッシュがあるために、呼び出しご
   とに結果が変わることがあります。より結果が予測しやすくなる
   "_clear_type_cache()" や "gc.collect()" を呼ぶ必要があるかもしれま
   せん。

   Python のあるビルドや実装が適切にこの情報を計算できない場合は、その
   代わりに "getallocatedblocks()" は 0 を返すことが許されています。

   バージョン 3.4 で追加.

sys.getcheckinterval()

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

   バージョン 3.2 で非推奨: 代わりに "getswitchinterval()" を使ってく
   ださい。

sys.getdefaultencoding()

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

sys.getdlopenflags()

   Return the current value of the flags that are used for "dlopen()"
   calls.  Symbolic names for the flag values can be found in the "os"
   module ("RTLD_xxx" constants, e.g. "os.RTLD_LAZY").  Availability:
   Unix.

sys.getfilesystemencoding()

   Unicode ファイル名と bytes ファイル名どうしを変換するのに使われるエ
   ンコーディングの名前を返します。 最良の互換性のために、たとえファイ
   ル名の表現に bytes がサポートされていたとしても、全てのケースで str
   をファイル名に使うべきです。 ファイル名を受け取ったり返したりする関
   数は str と bytes をサポートし、すぐにシステムにとって好ましい表現
   に変換すべきです。

   このエンコーディングは常に ASCII 互換です。

   "os.fsencode()" や "os.fsdecode()" は、正しいエンコーディングやエラ
   ーモードが使われていることを保証するために使うべきです。

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

   * Unix では、エンコーディングはロケールのエンコーディングです。

   * Windows では、エンコーディングはユーザの設定によって "'utf-8'"
     ま たは "'mbcs'" のどちらかになります。

   バージョン 3.2 で変更: "getfilesystemencoding()" の結果が "None" に
   なることはなくなりました。

   バージョン 3.6 で変更: Windows はもう "'mbcs'" を返す保証は無くなり
   ました。 より詳しいことは **PEP 529** および
   "_enablelegacywindowsfsencoding()" を参照してください。

sys.getfilesystemencodeerrors()

   Unicode ファイルシステムと bytes ファイル名どうしの変換で使われるエ
   ラーモード名を返します。 エンコーディング名は
   "getfilesystemencoding()" から返されます。

   "os.fsencode()" や "os.fsdecode()" は、正しいエンコーディングやエラ
   ーモードが使われていることを保証するために使うべきです。

   バージョン 3.6 で追加.

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__" メソッドを呼び出し、その
   オブジェクトがガベージコレクタに管理されていた場合はガベージコレク
   タのオーバーヘッドを増やします。

   "getsizeof()" を再帰的に使い、コンテナとその中身のサイズを割り出す
   例は、 再帰的な sizeof のレシピ を参照してください。

sys.getswitchinterval()

   インタプリタの "スレッド切り替え間隔" を返します。
   "setswitchinterval()" を参照してください。

   バージョン 3.2 で追加.

sys._getframe([depth])

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

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

sys.getprofile()

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

sys.gettrace()

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

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

sys.getwindowsversion()

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

   *platform* は "2 (VER_PLATFORM_WIN32_NT)" になっているでしょう。

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

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

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

   *platform_version* は、プロセスでエミュレートされているバージョンで
   はなく、現在のオペレーティングシステムの正確なメジャーバージョン、
   マイナーバージョン、ビルドナンバーを返します。 この関数は機能の検知
   ではなくロギングで使うためのものです。

   利用できる環境 : Windows.

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

   バージョン 3.6 で変更: *platform_version* の追加

sys.get_asyncgen_hooks()

   Returns an *asyncgen_hooks* object, which is similar to a
   "namedtuple" of the form *(firstiter, finalizer)*, where
   *firstiter* and *finalizer* are expected to be either "None" or
   functions which take an *asynchronous generator iterator* as an
   argument, and are used to schedule finalization of an asychronous
   generator by an event loop.

   バージョン 3.6 で追加: より詳しくは **PEP 525** を参照をしてくださ
   い。

   注釈: This function has been added on a provisional basis (see
     **PEP 411** for details.)

sys.get_coroutine_wrapper()

   Returns "None", or a wrapper set by "set_coroutine_wrapper()".

   バージョン 3.5 で追加: より詳しくは **PEP 492** を参照してください
   。

   注釈: This function has been added on a provisional basis (see
     **PEP 411** for details.)  Use it only for debugging purposes.

sys.hash_info

   数値のハッシュ実装のパラメータを与える *構造体シーケンス* です。数
   値型のハッシュ化についての詳細は 数値型のハッシュ化 を参照してくだ
   さい。

   +-----------------------+----------------------------------------------------+
   | 属性                  | 説明                                               |
   |=======================|====================================================|
   | "width"               | ハッシュ値に利用されるビット幅                     |
   +-----------------------+----------------------------------------------------+
   | "modulus"             | 数値ハッシュ計算に利用される素数の法               |
   +-----------------------+----------------------------------------------------+
   | "inf"                 | 正の無限大に対して返されるハッシュ値               |
   +-----------------------+----------------------------------------------------+
   | "nan"                 | nan に対して返されるハッシュ値                     |
   +-----------------------+----------------------------------------------------+
   | "imag"                | 複素数の虚部を表すための乗数                       |
   +-----------------------+----------------------------------------------------+
   | "algorithm"           | "str"、"bytes"、"memoryview" オブジェクトのハッシ  |
   |                       | ュアルゴリズムの名 前                              |
   +-----------------------+----------------------------------------------------+
   | "hash_bits"           | ハッシュアルゴリズムの内部出力サイズ               |
   +-----------------------+----------------------------------------------------+
   | "seed_bits"           | ハッシュアルゴリズムのシードキーのサイズ           |
   +-----------------------+----------------------------------------------------+

   バージョン 3.2 で追加.

   バージョン 3.4 で変更: *algorithm*、*hash_bits*、*seed_bits* を追加

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 進数に変換しなければ値の意
   味を持ちません。より読みやすいバージョン番号が必要な場合には *構造
   体シーケンス* "sys.version_info" を使用してください。

   More details of "hexversion" can be found at API と ABI のバージョ
   ニング.

sys.implementation

   現在起動している Python インタプリタに関する情報が格納されたオブジ
   ェクトです。すべての Python 実装において、以下の属性が存在すること
   が要求されています。

   *name* は実装の識別子です (例: "'cpython'")。実際の文字列は Python
   実装によって定義されますが、小文字であることが保証されています。

   *version* は "sys.version_info" と同じ形式の、Python *実装* のバー
   ジョンを表す名前付きタプルです。これは現在起動しているインタプリタ
   固有のバージョンを意味します。"sys.version_info" は Python *言語*
   のバージョンであり、これはそのバージョンに準拠した *実装* のバージ
   ョンです。例えば、PyPy 1.8 の "sys.implementation.version" は
   "sys.version_info(1, 8, 0, 'final', 0)" になるのに対し、
   "sys.version_info" は "sys.version_info(2, 7, 2, 'final', 0)" にな
   ります。CPython は、それがリファレンス実装であるため、両者は同じ値
   になります。

   *hexversion* は "sys.hexversion" と同形式の、16 進数での実装のバー
   ジョンです。

   *cache_tag* は、キャッシュされたモジュールのファイル名に使用される
   タグです。慣例により、これは実装名とバージョンを組み合わせた文字列
   になります (例: "'cpython-33'") が、Python 実装はその他の適切な値を
   使う場合があります。"cache_tag" に "None" が設定された場合、モジュ
   ールのキャッシングが無効になっていることを示します。

   "sys.implementation" may contain additional attributes specific to
   the Python implementation.  These non-standard attributes must
   start with an underscore, and are not described here.  Regardless
   of its contents, "sys.implementation" will not change during a run
   of the interpreter, nor between implementation versions.  (It may
   change between Python language versions, however.)  See **PEP 421**
   for more information.

   バージョン 3.3 で追加.

sys.int_info

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

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

   バージョン 3.1 で追加.

sys.__interactivehook__

   この属性が存在する場合、インタープリタが 対話モード で起動したとき
   に値は (引数なしで) 自動的に呼ばれます。これは "PYTHONSTARTUP" ファ
   イルの読み込み後に行われるため、それにこのフックを設定することが出
   来ます。"site" モジュールで 設定します。

   バージョン 3.4 で追加.

sys.intern(string)

   *string* を "隔離" された文字列のテーブルに入力し、隔離された文字列
   を返します -- この文字列は *string* 自体かコピーです。隔離された文
   字列は辞書検索のパフォーマンスを少しだけ向上させるのに有効です --
   辞書中のキーが隔離されており、検索するキーが隔離されている場合、(ハ
   ッシュ化後の) キーの比較は文字列の比較ではなくポインタの比較で行う
   ことができるからです。通常、Python プログラム内で利用されている名前
   は自動的に隔離され、モジュール、クラス、またはインスタンス属性を保
   持するための辞書は隔離されたキーを持っています。

   隔離された文字列はイモータルではありません。その恩恵を受けるために
   は "intern()" の返り値への参照を維持しなくてはなりません。

sys.is_finalizing()

   Return "True" if the Python interpreter is *shutting down*, "False"
   otherwise.

   バージョン 3.5 で追加.

sys.last_type
sys.last_value
sys.last_traceback

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

   変数の意味は、上記 "exc_info()" の返り値と同じです。

sys.maxsize

   "Py_ssize_t" 型の変数が取りうる最大値を示す整数です。通常、32 ビッ
   トプラットフォームでは "2**31 - 1"、64 ビットプラットフォームでは
   "2**63 - 1" になります。

sys.maxunicode

   Unicode コードポイントの最大値を示す整数、すなわち "1114111" (16 進
   数で "0x10FFFF") です。

   バージョン 3.3 で変更: **PEP 393** 以前は、オプション設定にUnicode
   文字の保存形式がUCS-2とUCS-4のどちらを指定したかによって、
   "sys.maxunicode" の値は "0xFFFF" が "0x10FFFF" になっていました。

sys.meta_path

   A list of *meta path finder* objects that have their "find_spec()"
   methods called to see if one of the objects can find the module to
   be imported. The "find_spec()" method is called with at least the
   absolute name of the module being imported. If the module to be
   imported is contained in a package, then the parent package's
   "__path__" attribute is passed in as a second argument. The method
   returns a *module spec*, or "None" if the module cannot be found.

   参考:

     "importlib.abc.MetaPathFinder"
        The abstract base class defining the interface of finder
        objects on "meta_path".

     "importlib.machinery.ModuleSpec"
        The concrete class which "find_spec()" should return instances
        of.

   バージョン 3.4 で変更: *Module specs* were introduced in Python
   3.4, by **PEP 451**. Earlier versions of Python looked for a method
   called "find_module()". This is still called as a fallback if a
   "meta_path" entry doesn't have a "find_spec()" method.

sys.modules

   既に読み込まれているモジュールとモジュール名がマップされている辞書
   です。これを使用してモジュールの強制再読み込みやその他のトリック操
   作が行えます。ただし、この辞書の置き換えは想定された操作ではなく、
   必要不可欠なアイテムを削除することで Python が異常終了してしまうか
   もしれません。

sys.path

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

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

   プログラムはその目的のために、このリストを自由に修正できます。文字
   列とバイト列だけが "sys.path" に追加でき、 ほかの全てのデータ型はイ
   ンポート中に無視されます。

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

sys.path_hooks

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

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

sys.path_importer_cache

   *finder* オブジェクトのキャッシュ機能を果たす辞書です。キーは
   "sys.path_hooks" に渡されているパスで、値は見つかった finder になり
   ます。パスが正常なファイルシステムパスであり、finder が
   "sys.path_hooks" 上に見つからない場合は "None" が格納されます。

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

   バージョン 3.3 で変更: finder が見つからない時、"imp.NullImporter"
   ではなく "None" が格納されるようになりました。

sys.platform

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

   Linux を除く Unix システムでは、"uname -s" が返す小文字の OS 名に
   "uname -r" が返すバージョン名の先頭を追加したものになります (例:
   "'sunos5'"、"'freebsd8'")。この値は *Python がビルドされた時点のも
   の* です。システム固有のバージョンをテストする場合を除き、以下のよ
   うな用法で使うことを推奨します:

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

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

   +------------------+-----------------------------+
   | システム         | "platform" の値             |
   |==================|=============================|
   | Linux            | "'linux'"                   |
   +------------------+-----------------------------+
   | Windows          | "'win32'"                   |
   +------------------+-----------------------------+
   | Windows/Cygwin   | "'cygwin'"                  |
   +------------------+-----------------------------+
   | Mac OS X         | "'darwin'"                  |
   +------------------+-----------------------------+

   バージョン 3.3 で変更: Linuxでは、 "sys.platform" はもはやメジャー
   バージョン番号を含みません。 "'linux2'" や "'linux3'" の代わりに
   "'linux'" が格納されます。 古いPythonではこの変数はバージョン番号を
   含むため、前述した "startswith" イディオムを使用することをお勧めし
   ます。

   参考: "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* は "3.2" のよ
   うな Python のバージョン番号)。

   注釈: 仮想環境 で起動されている場合、この値は "site.py" によって
     仮想環 境を示すよう変更されます。実際の Python のインストール先は
     "base_prefix" から取得できます。

sys.ps1
sys.ps2

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

sys.setcheckinterval(interval)

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

   バージョン 3.2 で非推奨: スレッドスイッチングと非同期タスクの内部ロ
   ジックが変更されたため、この関数はもはや効果がありません 。代わりに
   "setswitchinterval()" を使用してください。

sys.setdlopenflags(n)

   Set the flags used by the interpreter for "dlopen()" calls, such as
   when the interpreter loads extension modules.  Among other things,
   this will enable a lazy resolving of symbols when importing a
   module, if called as "sys.setdlopenflags(0)".  To share symbols
   across extension modules, call as
   "sys.setdlopenflags(os.RTLD_GLOBAL)".  Symbolic names for the flag
   values can be found in the "os" module ("RTLD_xxx" constants, e.g.
   "os.RTLD_LAZY").

   利用できる環境 : Unix 。

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

   If the new limit is too low at the current recursion depth, a
   "RecursionError" exception is raised.

   バージョン 3.5.1 で変更: A "RecursionError" exception is now raised
   if the new limit is too low at the current recursion depth.

sys.setswitchinterval(interval)

   インタプリタのスレッド切り替え間隔を秒で指定します。この浮動小数点
   値が、並列に動作しているPythonスレッドに割り当てられたタイムスライ
   スの理想的な処理時間です。実際の値はより高くなることがあり、特に長
   時間実行される内部関数やメソッドが使われた時や、他にスレッドが、そ
   の間隔の終了をオペレーティングシステムが決定するようスケジュールさ
   れた場合などが該当します。インタプリタは自身のスケジューラを持ちま
   せん。

   バージョン 3.2 で追加.

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 オブジェクトについては、 標準型の階層 を参照してくだ
   さい。

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

sys.set_asyncgen_hooks(firstiter, finalizer)

   Accepts two optional keyword arguments which are callables that
   accept an *asynchronous generator iterator* as an argument. The
   *firstiter* callable will be called when an asynchronous generator
   is iterated for the first time. The *finalizer* will be called when
   an asynchronous generator is about to be garbage collected.

   バージョン 3.6 で追加: See **PEP 525** for more details, and for a
   reference example of a *finalizer* method see the implementation of
   "asyncio.Loop.shutdown_asyncgens" in Lib/asyncio/base_events.py

   注釈: This function has been added on a provisional basis (see
     **PEP 411** for details.)

sys.set_coroutine_wrapper(wrapper)

   Allows intercepting creation of *coroutine* objects (only ones that
   are created by an "async def" function; generators decorated with
   "types.coroutine()" or "asyncio.coroutine()" will not be
   intercepted).

   The *wrapper* argument must be either:

   * a callable that accepts one argument (a coroutine object);

   * "None", to reset the wrapper.

   If called twice, the new wrapper replaces the previous one.  The
   function is thread-specific.

   The *wrapper* callable cannot define new coroutines directly or
   indirectly:

      def wrapper(coro):
          async def wrap(coro):
              return await coro
          return wrap(coro)
      sys.set_coroutine_wrapper(wrapper)

      async def foo():
          pass

      # The following line will fail with a RuntimeError, because
      # ``wrapper`` creates a ``wrap(coro)`` coroutine:
      foo()

   See also "get_coroutine_wrapper()".

   バージョン 3.5 で追加: より詳しくは **PEP 492** を参照してください
   。

   注釈: This function has been added on a provisional basis (see
     **PEP 411** for details.)  Use it only for debugging purposes.

sys._enablelegacywindowsfsencoding()

   Changes the default filesystem encoding and errors mode to 'mbcs'
   and 'replace' respectively, for consistency with versions of Python
   prior to 3.6.

   This is equivalent to defining the "PYTHONLEGACYWINDOWSFSENCODING"
   environment variable before launching Python.

   Availability: Windows

   バージョン 3.6 で追加: より詳しくは **PEP 529** を参照をしてくださ
   い。

sys.stdin
sys.stdout
sys.stderr

   インタプリタが使用する、それぞれ標準入力、標準出力、および標準エラ
   ー出力の *ファイルオブジェクト* です:

   * "stdin" は ("input()" の呼び出しも含む) すべての対話型入力に使
     わ れます。

   * "stdout" は "print()" および *expression* 文の出力と、"input()"
     のプロンプトに使用されます。

   * インタプリタ自身のプロンプトおよびエラーメッセージは "stderr"
     に 出力されます。

   これらのストリームは "open()" が返すような通常の *テキストファイル*
   です。引数は以下のように選択されます:

   * 文字エンコーディングはプラットフォーム依存です。Windows では、
     ス トリームが対話型 ("isatty()" メソッドが "True" を返す場合) で
     あれ ば、コンソールのコードページが、それ以外では ANSI コードペー
     ジが 使用されます。その他のプラットフォームでは、ロケールのエンコ
     ーデ ィングが使用されます ("locale.getpreferredencoding()" を参照
     )。

     しかしながら、どのプラットフォームでも Python を起動する前に環境
     変数 "PYTHONIOENCODING" を設定することでこの値を上書きすることが
     出来ます。

   * 対話型の場合、標準ストリームはラインバッファになります。それ以
     外 の場合は、一般のテキストファイルと同様にブロックバッファになり
     ま す。この設定はコマンドラインオプション "-u" で上書きできます。

   注釈: 標準ストリームにバイナリーデータの読み書きを行うには下位の
     バイナ リー "buffer" オブジェクトを使用してください。例えば
     "bytes" を "stdout" に書き出す場合は
     "sys.stdout.buffer.write(b'abc')" を使 用してください。However,
     if you are writing a library (and do not control in which context
     its code will be executed), be aware that the standard streams
     may be replaced with file-like objects like "io.StringIO" which
     do not support the "buffer" attribute.

sys.__stdin__
sys.__stdout__
sys.__stderr__

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

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

   注釈: Under some conditions "stdin", "stdout" and "stderr" as
     well as the original values "__stdin__", "__stdout__" and
     "__stderr__" can be "None". It is usually the case for Windows
     GUI apps that aren't connected to a console and Python apps
     started with **pythonw**.

sys.thread_info

   スレッドの実装に関する情報が格納された *構造体シーケンス* です。

   +--------------------+-----------------------------------------------------------+
   | 属性               | 説明                                                      |
   |====================|===========================================================|
   | "name"             | スレッド実装の名前:  * "'nt'": Windows スレッド  *        |
   |                    | "'pthread'": POSIX スレッド  * "'solaris'": Solaris スレ  |
   |                    | ッド                                                      |
   +--------------------+-----------------------------------------------------------+
   | "lock"             | ロック実装の名前:  * "'semaphore'": セマフォを使用するロ  |
   |                    | ック  * "'mutex+cond'": mutex と条件変数を使用するロック  |
   |                    | * "None" この情報が不明の場合                             |
   +--------------------+-----------------------------------------------------------+
   | "version"          | スレッドライブラリの名前とバージョン。文字列、あるいは不  |
   |                    | 明の場合は "None"。                                       |
   +--------------------+-----------------------------------------------------------+

   バージョン 3.3 で追加.

sys.tracebacklimit

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

sys.version

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

sys.api_version

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

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" と等価、などに
   なります。

   バージョン 3.1 で変更: 名前を使った要素アクセスがサポートされました
   。

sys.warnoptions

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

sys.winver

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

sys._xoptions

   A dictionary of the various implementation-specific flags passed
   through the "-X" command-line option.  Option names are either
   mapped to their values, if given explicitly, or to "True".
   Example:

      $ ./python -Xa=b -Xc
      Python 3.2a3+ (py3k, Oct 16 2010, 20:14:50)
      [GCC 4.4.3] on linux2
      Type "help", "copyright", "credits" or "license" for more information.
      >>> import sys
      >>> sys._xoptions
      {'a': 'b', 'c': True}

   **CPython implementation detail:** この "-X" によって渡されたオプシ
   ョンにアクセスする方法は CPython 固有です。他の実装ではそれらは他の
   意味でエクスポートされるか、あるいは何もしません。

   バージョン 3.2 で追加.

-[ 出典 ]-

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