は、以下のインタラクティブセッション守っ:予期しない空の文字列
In [1]: s = 'emptiness'
In [2]: s.replace('', '*')
Out[2]: '*e*m*p*t*i*n*e*s*s*'
In [3]: s.count('')
Out[3]: 10
を今日はこれを発見し、それは少し混乱し、私にとっては驚くべきことです。
私は、Pythonについては、このようなことを学ぶ愛が、これはかなり混乱落とし穴につながる可能性があるように思えます。空の文字列を変数として渡され、そしてちょうどが空の文字列であることをが起こった場合たとえば、あなたはいくつかの驚くべき結果で終わることができました。上記の対話セッションに基づいて、私は次のように(JavaScriptの動作と同様に)文字列内のすべての文字のリストを作ると思うだろうので、行動も、少し矛盾しているようです。代わりに、エラーが発生します:
In [4]: s.split('')
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-4-c31bd2432bc1> in <module>()
----> 1 s.split('')
ValueError: empty separator
また、これはstr.endswith()
とstr.startswith()
といくつかの一見矛盾した行動につながる:様々なstring methodsを試す
In [5]: s.endswith('')
Out[5]: True
In [6]: s.endswith('s')
Out[6]: True
In [7]: s.startswith('')
Out[7]: True
In [8]: s.startswith('e')
Out[8]: True
、あなたはより多くの同様の奇妙な例を見つけることができます。
私の質問は、なぜ空の文字列がこのように振る舞うんのですか?または、これは空の文字列を処理するメソッドの結果ですか?誰かが洞察力を持っている、またはこの行動の説明/説明の方向に私を指すことができる場合、それは素晴らしいだろう。