Dazu will ich mal anmerken, dass die meisten Funktionen wahrscheinlich auch keine Fehler werfen, sondern diese schon innerhalb der Funktion behandeln und irgendetwas definiertes tun, wie zB None zurückzugeben.
Das kann man zum Beispiel an der startswith Methode sehen:
Code: Alles auswählen
>>> a = ""
>>> a.startswith("a")
False
>>> a[0] == "a"
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
a[0] == "a"
IndexError: string index out of range
a[0] == "a" und a.startswith("a") machen das selbe, nur dass die Funktion startswith keinen Fehler wirft, weil es damit umgehen kann, dass der String leer ist.
(Wobei man anstatt a[0] auch a[0:1] schreiben könnte, beim Slicen wird kein Fehler geworfen :p)