2017-03-08 13 views
1

の返却:空の文字列は、私は今、本当に困惑している代わりにはIndexError

>>> string = "some string" 
>>> string[100:105] 
'' 
>>> string[100] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
IndexError: string index out of range 

なぜ(予想通り)string[100]一方、空の文字列はIndexErrorを返したstring[100:105]復帰? string[100:105]がIndexErrorを発生させないのはなぜですか?

+2

それが定義されているので。スライスはインデックスエラーを発生させません。 –

+0

これは彼らが作った奇妙なデザインの決定です。 – user2357112

+0

http://stackoverflow.com/questions/9490058/why-substring-slicing-index-out-of-range-works-in-python重複としてフラグが立てられている – nir0s

答えて

0

Pythonの文字列スライシングはエラーを発生させず、探している文字列を返します(この場合は何もないので、実際は空文字列です)。

スライシングは項目のサブシーケンスを返し、バインドチェックは行いません。必要なデータ(メモリ)が空の場合は、空の文字列を返します。

1

Pythonで文字列をスライスすると、string[100:105]という操作は、正常に失敗するように特別に設計されています。範囲外スライスの結果は、空の文字列 ''を返すことです。詳細は、Informal Introductionを参照してください。

文字列の特定のインデックスにアクセスすると、string[100]は正常に失敗するようには設計されていないため、例外が発生します。

関連する問題