私はちょうどスライスをサポートする必要があると私はスライスが非整数型を含めることができることに気付きましたlibraryのためのテストカバレッジを向上しました:pythonスライスに組み込まれていない組み込み型以外はなぜですか?
>>> slice(1, "2", 3.0)
slice(1, '2', 3.0)
>>> sl = slice(1, "2", 3.0)
>>> [1,2,3][sl]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: slice indices must be integers or None or have an __index__ method
これはちょうど私の静的型付けの背景かもしれないが、それはそうです私には、__index__
のない組み込み型はTypeError
なしでここに渡すことができます。なぜこれはそうですか? __index__
を実装するタイプのダックタイピングをサポートするために、任意のタイプが許可されていると仮定して正しいでしょうか?最も一般的に使用されるケースのパフォーマンス上の理由により、タイプチェックが欠けていますか?
PEP 357より前の例ではスライスが無効でしたか?
floatを使用したスライス構文は、n次元空間内の境界ボックスを効率的に記述することができます。これは、場合によっては便利なことがあります。カスタムタイプは、そのようなスライスを受け入れることができます。 – Kevin
これは私が考えていなかったフロートの本当に面白い使用例です。文字列はなぜ許可されますか? – shuttle87
スライスで[省略記号](http://stackoverflow.com/questions/772124/what-does-the-python-ellipsis-object-do)を使用することもできます。 –