2017-10-01 4 views
1

現在、sys.maxsizeにはどのような値がありますか? <a href="https://docs.python.org/2/library/sys.html" rel="nofollow noreferrer">the latest Python 2 documentation</a>で

sys.maxsize

プラットフォームの Py_ssize_t型タイプでサポートされる最大の正の整数ので、最大サイズのリスト、文字列、dicts、および 他の多くのコンテナを持つことができます。 the latest Python 3 documentation

sys.maxsize

最大値をPy_ssize_t型を取ることができるタイプ の変数を与える整数です。 32ビットプラットフォームでは通常2 ** 31 - 1で、64ビットプラットフォームでは 2 ** 63 - 1です。

sys.maxsizeは、Python 3のドキュメントで指定された値とのPython 2にin this fileに使用される値:

  • 2 ** 31から1 = 2147483647。
  • 2 ** 63から1 = 9223372036854775807

私の質問は:sys.maxsizeは、Python 2で取ることができます可能な値は何ですか?これらの2つの部分は可能な値の一部ですか?その他の可能な値はありますか(たとえば、他のプラットフォームやオペレーティングシステムなど)? Python 3でも可能な値を見つけることは面白いでしょう。

関連質問:

答えて

4
  • sys.maxsizeはあなたにはCPythonをコンパイルするのに使用されるCコンパイラについて何かを語っているので、それが持っているのPython 2とPython 3の間に違いはありませんCコンパイラとコンパイルされているPythonのバージョンではなく、使用されたオプションを使用します。
  • これは、プラットフォームCコンパイラのssize_tタイプに適合する最大の正の整数です。私が見たことのあるすべてのプラットフォームで、32ビットまたは64ビットの符号付き2の補数の整数です。これはすでに見つかった2つの特定の値に正確に対応しています。
  • これは、ドキュメント内にtype Py_ssize_tと呼ばれています。なぜなら、Pythonはすべての世界のCコンパイラがそれらを実装するのを待っている新しいC概念のために独自のtypedef(Cレベルで)を作成しなければならないからです。これらのPython固有のtypedefは、既知のCコンパイラがすべて追いついても( "壊れていない、修正しない")、通常はソースコード内にあります。
+1

(https://github.com/python/cpython/blob/288d1daadaddf6ae35cf666138ba4b5d07449657/Include/pyport.h#L108-L111)[それらが定義されているところです] –

関連する問題

 関連する問題