Diferencia entre la salida del script de Python y la salida de la consola de Python

Tengo este archivo .py:

from sys import argv script, filename = argv print "We're going to erase %r." % filename print "If you don't want that, hit CTRL-C (^C)." print "If you do want that, hit RETURN." raw_input("?") print "Opening the file..." target = open(filename, 'w') print "Truncating the file. Goodbye!" target.truncate() print "Now I'm going to ask you for three lines." line1 = raw_input("line 1: ") line2 = raw_input("line 2: ") line3 = raw_input("line 3: ") print "I'm going to write these to the file." target.write(line1) target.write("\n") target.write(line2) target.write("\n") target.write(line3) target.write("\n") print "And finally, we close it." target.close() 

Lo que no entiendo:

a) ¿Por qué en el intérprete si escribo, raw_input("?") , luego escribo f y raw_input("?") enter, genera la cadena 'f' y si ejecuto el archivo .py no me devuelve la cadena ‘f’ ?

b) Además, Python docs dice: “La función luego lee una línea de la entrada, la convierte en una cadena (eliminando una nueva línea final), y la devuelve. Entonces, ¿por qué la línea 7 se imprime en una nueva línea en lugar de una línea? 6 (“? Abriendo el archivo …”). ¿De dónde viene eso?

a) El intérprete imprime la salida de los comandos de forma predeterminada, pero su script no lo hace a menos que use la instrucción de print .

 print raw_input('?') 

b) El '\n' no está en la cadena devuelta desde raw_input , pero de todos modos es capturado por la consola cuando presionas Enter, por lo que este es un efecto secundario que obtienes al usar raw_input .

 print repr(raw_input('?')) # You'll get 'f', not 'f\n' 

a) Devuelve la cadena, pero no la estás guardando en una variable. El intérprete interactivo hará eco del valor en ese caso.

b) El \n es probablemente parte de la entrada (su escritura), aunque es difícil saber a qué se refiere exactamente.