How good is startswith?

前端 未结 10 523
执笔经年
执笔经年 2021-01-07 19:38

Is

text.startswith(\'a\')  

better than

text[0]==\'a\'  

?

Knowing text is not empty and we a

10条回答
  •  谎友^
    谎友^ (楼主)
    2021-01-07 19:46

    text[0] fails if text is an empty string:

    IronPython 2.6 Alpha (2.6.0.1) on .NET 4.0.20506.1
    Type "help", "copyright", "credits" or "license" for more information.
    >>> text = ""
    >>> print(text.startswith("a"))
    False
    >>> print(text[0]=='a')
    Traceback (most recent call last):
      File "", line 1, in 
    IndexError: index out of range: 0
    

    EDIT: You say you "know" that text is not empty... how confident are you of that, and what would you want to happen if it is empty in reality? If a failure is appropriate (e.g. it means a bug in your code) that would encourage the use of text[0]=='a'.

    Other questions:

    • How concerned are you about the performance of this? If this is performance critical, then benchmark it on your particular Python runtime. I wouldn't be entirely surprised to find that (say) one form was faster on IronPython and a different one faster on CPython.

    • Which do you (and your team) find more readable?

提交回复
热议问题