¿Cómo se inicia python con el trabajo?

No puedo entender el comportamiento del método str.startswith .

Si ejecuto "hello".startswith("") devuelve True. Idealmente, no comienza con una cadena vacía.

 >>> "hello".startswith("") True 

La documentación establece:

Devuelva True si la cadena comienza con el prefijo, de lo contrario devuelva False prefix también puede ser una tupla de prefijos para buscar.

Entonces, ¿cómo funciona la función?

str.startswith() puede expressse en código Python como:

  def startswith(source, prefix): return source[:len(prefix)] == prefix 

Comprueba si los primeros caracteres de len(prefix) de la cadena de origen son iguales al prefijo. Si pasa un prefijo de longitud cero, eso significa que se prueban los primeros 0 caracteres. Una cadena de longitud 0 es siempre igual a cualquier otra cadena de longitud 0.

Tenga en cuenta que esto también se aplica a otras pruebas de cadena:

 >>> s = 'foobar' >>> '' in s True >>> s.endswith('') True >>> s.find('') 0 >>> s.index('') 0 >>> s.count('') 7 >>> s.replace('', ' -> ') ' -> f -> o -> o -> b -> a -> r -> ' 

Esas dos últimas demostraciones, contando la cadena vacía o reemplazando la cadena vacía con otra cosa, muestran que puede encontrar una cadena vacía en cada posición en la cadena de entrada.

Una cadena p es un prefijo de una cadena s si s = p + x , por lo que la cadena vacía es un prefijo de todas las cadenas (es como 0, s = 0 + s ).