2. Usando el intérprete de Python
*********************************


2.1. Invocando al intérprete
============================

El intérprete de Python generalmente se instala como
"/usr/local/bin/python3.10" en aquellas máquinas donde está
disponible; poner "/usr/local/bin" en la ruta de búsqueda de su shell
de Unix hace posible iniciarlo escribiendo el comando:

   python3.10

en el terminal [1]. Ya que la elección del directorio dónde vivirá el
intérprete es una opción del proceso de instalación, puede estar en
otros lugares; consulta a tu experto Python local o administrador de
sistemas. (Por ejemplo, "/usr/local/python" es una alternativa
popular).

En máquinas con Windows en las que haya instalado Python desde
Microsoft Store, el comando "python3.10" estará disponible. Si tiene
el lanzador py.exe instalado, puede usar el comando "py". Consulte
Excurso: configurar variables de entorno para conocer otras formas de
iniciar Python.

Se puede salir del intérprete con estado de salida cero ingresando el
carácter de fin de archivo ("Control-D" en Unix, "Control-Z" en
Windows). Si eso no funciona, puedes salir del intérprete escribiendo
el comando: "quit()".

Las características para edición de líneas del intérprete incluyen
edición interactiva, sustitución de historial y completado de código
en sistemas que soportan GNU Readline librería. Quizás la forma más
rápida para comprobar si las características de edición se encuentran
disponibles es presionar "Control-P" en el primer prompt de Python que
aparezca. Si se escucha un sonido, tienes edición de línea de
comandos; ver Apéndice Edición de entrada interactiva y sustitución de
historial para una introducción a las teclas. Si no parece que ocurra
nada, o si se muestra "^P", estas características no están
disponibles; solo vas a poder usar la tecla de retroceso (*backspace*)
para borrar los caracteres de la línea actual.

El intérprete funciona de manera similar al shell de Unix: cuando se
le llama con una entrada estándar conectada a un terminal, lee y
ejecuta comandos de manera interactiva; cuando se le llama con un
argumento de nombre de archivo o con un archivo como entrada estándar,
lee y ejecuta un *script* desde ese archivo.

A second way of starting the interpreter is "python -c command [arg]
...", which executes the statement(s) in *command*, analogous to the
shell's "-c" option.  Since Python statements often contain spaces or
other characters that are special to the shell, it is usually advised
to quote *command* in its entirety.

Algunos módulos de Python también son útiles como scripts. Estos
pueden invocarse utilizando "python -m module [arg] ...", que ejecuta
el archivo fuente para *module* como si se hubiera escrito el nombre
completo en la línea de comandos.

Cuando se usa un script, a veces es útil poder ejecutar el script y
luego ingresar al modo interactivo. Esto se puede hacer pasando la
"-i" antes del nombre del script.

Todas las opciones de la línea de comandos se describen en Línea de
comandos y entorno.


2.1.1. Paso de argumentos
-------------------------

Cuando son conocidos por el intérprete, el nombre del script y los
argumentos adicionales se convierten a una lista de cadenas de texto
asignada a la variable "argv" del módulo "sys". Puedes acceder a esta
lista haciendo "import sys". La longitud de la lista es al menos uno;
cuando no se utiliza ningún script o argumento, "sys.argv[0]" es una
cadena vacía. Cuando se pasa el nombre del script con "'-'" (lo que
significa la entrada estándar), "sys.argv[0]" vale "'-'". Cuando se
usa "-c" *comando*, "sys.argv[0]" vale "'-c'". Cuando se usa "-m"
*módulo*, "sys.argv[0]" contiene el valor del nombre completo del
módulo. Las opciones encontradas después de "-c" *comand* o "-m"
*módulo* no son consumidas por el procesador de opciones de Python
pero de todas formas se almacenan en "sys.argv" para ser manejadas por
el comando o módulo.


2.1.2. Modo interactivo
-----------------------

Cuando se leen los comandos desde un terminal, se dice que el
intérprete está en *modo interactivo*. En este modo, espera el
siguiente comando con el *prompt primario*, generalmente tres signos
de mayor que (">>>"); para las líneas de continuación, aparece el
*prompt secundario*, por defecto tres puntos ("..."). El intérprete
imprime un mensaje de bienvenida que indica su número de versión y un
aviso de copyright antes de imprimir el primer *prompt primario*:

   $ python3.10
   Python 3.10 (default, June 4 2019, 09:25:04)
   [GCC 4.8.2] on linux
   Type "help", "copyright", "credits" or "license" for more information.
   >>>

Las líneas de continuación son necesarias cuando se ingresa una
construcción multilínea. Como ejemplo, echa un vistazo a la sentencia
"if":

   >>> the_world_is_flat = True
   >>> if the_world_is_flat:
   ...     print("Be careful not to fall off!")
   ...
   Be careful not to fall off!

Para más información sobre el modo interactivo, ver Modo interactivo.


2.2. El intérprete y su entorno
===============================


2.2.1. Codificación del código fuente
-------------------------------------

De forma predeterminada, los archivos fuente de Python se tratan como
codificados en UTF-8. En esa codificación, los caracteres de la
mayoría de los idiomas del mundo se pueden usar simultáneamente en
literales, identificadores y comentarios, aunque la biblioteca
estándar solo usa caracteres ASCII para los identificadores, una
convención que debería seguir cualquier código que sea portable.Para
mostrar todos estos caracteres correctamente, tu editor debe reconocer
que el archivo es UTF-8, y debe usar una fuente que admita todos los
caracteres del archivo.

Para declarar una codificación que no sea la predeterminada, se debe
agregar una línea de comentario especial como la *primera* línea del
archivo. La sintaxis es la siguiente:

   # -*- coding: encoding -*-

donde *codificación* es uno de los "codecs" soportados por Python.

Por ejemplo, para declarar que se utilizará la codificación de
Windows-1252, la primera línea del archivo de código fuente debe ser:

   # -*- coding: cp1252 -*-

Una excepción a la regla de *primera línea* es cuando el código fuente
comienza con una línea UNIX "shebang" line. En ese caso, la
declaración de codificación debe agregarse como la segunda línea del
archivo. Por ejemplo:

   #!/usr/bin/env python3
   # -*- coding: cp1252 -*-

-[ Notas al pie ]-

[1] En Unix, el intérprete de Python 3.x no está instalado por defecto
    con el ejecutable llamado "python", por lo que no entra en
    conflicto con un ejecutable de Python 2.x instalado
    simultáneamente.
