New submission from Glenn Linderman <v+pyt...@g.nevcal.com>:

The documentation is reasonably clear regarding the first parameter, which can 
be a string or a tuple of strings to match at the start or end of a string.

However, the other two parameters are much less clear in their effect.

text = "Now the day is over"
text.startswith('the', 2, 8)

Does it produce True because 'w the' is at the beginning of the text[2:] ? 
Maybe. Or because there is an ending position, must it fail because it doesn't 
match all of text[2:8] ?

text.startswith('day', 8, 10)

Does this produce True because everything in day matches text[8:10] or must it 
always produce false for any value of text because the match is never as long 
as the prefix string?

text.startswith(('day', 'month', 'year'), 8, 12)

Can this ever match day or month, because it is comparing to text[8:12], or can 
only year match because of the start and end?

Is there a difference between the following:

text.startswith(('day', 'month', 'year'), 8, 12)
text[8:12].startswith(('day', 'month', 'year'))

If no difference, why does startswith even need the extra two parameters? Maybe 
only in performance?

If no difference, why doesn't the documentation describe it that way, so that 
it could be far clearer?

If there is a difference, what is the difference?

Similar questions for endswith.

----------
messages: 347179
nosy: v+python
priority: normal
severity: normal
status: open
title: poor documentation for .startswith, .endswith

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue37490>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to