¿Por qué no se imprimió la cadena en la parte superior de esta función?

Encontré la siguiente función en un tutorial. Cuando llamo a la función, "This prints a passed string into this function" no se imprime. ¿Por qué la función no imprime este texto cuando se llama?

 def printme(str): "This prints a passed string into this function" print str return # Now you can call printme function printme("I'm first call to user defined function!") printme("Again second call to the same function") 

Lo que estás viendo es una cadena de documentos, o una cadena de documentos en breve.

Una cadena de documentación es una cadena que se supone que documenta la cosa a la que se adjunta. En su caso, se adjunta a una función, y como tal se supone que documenta la función. También puedes tener cadenas de documentación para clases y módulos.

Usted crea cadenas de documentos simplemente colocando una cadena en sí misma como la primera cosa en una función (o clase, o módulo). Luego, el intérprete lo usará como una cadena de documentos y lo hará disponible en el atributo __doc__ especial:

 >>> def printme( str ): "This prints a passed string into this function" print str >>> printme.__doc__ 'This prints a passed string into this function' 

Las secuencias de documentación también son utilizadas por la función help() :

 >>> help(printme) Help on function printme in module __main__: printme(str) This prints a passed string into this function 

La práctica común de las cadenas de documentación, para dejar en claro que se supone que son cadenas de documentación reales y no solo cadenas “correctas” mal ubicadas, es usar comillas triples. Las comillas triples se utilizan para crear cadenas de líneas múltiples que, además, también permiten que las cadenas de documentos sean líneas múltiples:

 def printme (str): ''' Print the string passed in the `str` argument to the standard output. This is essentially just a wrapper around Python's built-in `print`. ''' print(str) 

Varias convenciones de docstring también se describen en PEP 257 .

Se ejecuta, sin embargo, la evaluación y la no utilización de una cadena es, de hecho, una operación no operativa. La razón por la que funciona en el REPL es que el REPL es el RE P L, que es el bucle de impresión de evaluación de lectura. El paso de impresión no existe en la ejecución ordinaria.