El shell de Python¶
Tras escribir algunos programas básicos, ya va siendo hora de echar un vistazo a la ventana shell.
Comandos¶
Los comandos del shell son en realidad sentencias Python:
>>> texto="Hola"
>>> print(texto)
Hola
A diferencia de lo que sucede en los programas, los comandos se teclean y ejecutan de forma interactiva, a medida que pulsamos Enter.
Historial de comandos¶
El intérprete de Python mantiene un historial de los últimos comandos ejecutados en la ventana shell de IDLE. Podemos recuperar comandos anteriores de dos maneras:
-
si el comando está visible en la ventana, llevar el cursor a esa línea y pulsar Enter. Esto copia el texto del comando en la línea donde está el prompt, y podemos usar las teclas Left y Right para mover el cursor a izquierda y derecha, editar el comando, y ejecutarlo de nuevo pulsando Enter.
-
pulsando Ctrl+P (previous) se van recuperando comandos del historial. Mientras navegamos hacia atrás, podemos movernos en sentido contrario pulsando Ctrl+N (next).
¡Cuidado!
En algunos sistemas operativos se usa la tecla Alt en lugar de Ctrl para desplazarse por el historial de comandos. Es posible que Ctrl+P sea una combinación de teclas asociada a la acción de imprimir el documento.
Recorriendo el historial con las teclas de flecha
En sesiones shell de otros editores distintos de IDLE, podemos usar las teclas Up y Down para movernos por el historial de comandos. Eso no funciona en IDLE, donde tenemos que usar Ctrl+P y Ctrl+N. Las flechas mueven el cursor por la ventana del shell.
El eco¶
Si escribimos una expresión a continuación del prompt, se evaluará y mostrará el resultado:
>>> valor = 99
>>> valor * 2
198
La operación de asignación no produce "eco", pero si escribimos una expresión aislada, se evalúa y visualiza.
También funciona si tecleamos el nombre de una variable:
>>> valor
99
Podemos usar el "eco" para probar una función:
>>> valor1 = 99
>>> valor2 = 50
>>> min(valor1, valor2)
50
La variable _¶
Cuando evaluamos una expresión haciendo uso del eco en el shell, el resultado
se guarda en una variable interna cuyo nombre se limita a un carácter _
>>> valor1 = 99
>>> valor2 = 50
>>> min(valor1, valor2)
50
>>> _ * 2
100
Esto tiene una cierta utilidad si queremos dividir un cálculo en varios pasos. Por ejemplo, para calcular el perímetro de una circunferencia de radio 5:
>>> 5 * 3.14159
15.70795
>>> _ * 2
31.4159
Pero si la cosa se complica, seguramente es mejor escribir un programa.
El prompt secundario¶
Si introducimos una sentencia que Python considere incompleta, mostrará
sucesivos prompts ... para darnos la posibilidad de completarla:
>>> max(
... 15,
... 3,
... 27
... )
27
Al introducir el paréntesis de cierre, la sentencia se considera completa y
se ejecutará. A este prompt ... se le llama "secundario", y sirve para
completar sentencias.
En versiones modernas de IDLE, al pulsar Ctrl+P para recuperar comandos anteriores, si se trata de un comando multilínea, se recupera completo, mostrando los prompts secundarios. La edición del comando recuperado permite borrar o insertar líneas antes de pulsar Enter para ejecutarlo.
El otros shell distintos del de IDLE, hay que recuperar y ejecutar línea a línea.
La ayuda de Python¶
Otra posible utilidad del shell es el comando:
>>> help()
que da inicio a una sesión de ayuda:
Welcome to Python 3's help utility! If this is your first time using
Python, you should definitely check out the tutorial at
https://docs.python.org/3.13/tutorial/.
Enter the name of any module, keyword, or topic to get help on writing
Python programs and using Python modules. To get a list of available
modules, keywords, symbols, or topics, enter "modules", "keywords",
"symbols", or "topics".
Each module also comes with a one-line summary of what it does; to list
the modules whose name or summary contain a given string such as "spam",
enter "modules spam".
To quit this help utility and return to the interpreter,
enter "q" or "quit".
help>
Nótese que ha cambiado el prompt:
help>
Probemos a introducir topics como término de búsqueda:
help> topics
Here is a list of available topics. Enter any topic name to get more help.
ASSERTION DEBUGGING LITERALS SEQUENCES
ASSIGNMENT DELETION LOOPING SHIFTING
ASSIGNMENTEXPRESSIONS DICTIONARIES MAPPINGMETHODS SLICINGS
ATTRIBUTEMETHODS DICTIONARYLITERALS MAPPINGS SPECIALATTRIBUTES
ATTRIBUTES DYNAMICFEATURES METHODS SPECIALIDENTIFIERS
AUGMENTEDASSIGNMENT ELLIPSIS MODULES SPECIALMETHODS
BASICMETHODS EXCEPTIONS NAMESPACES STRINGMETHODS
BINARY EXECUTION NONE STRINGS
BITWISE EXPRESSIONS NUMBERMETHODS SUBSCRIPTS
BOOLEAN FLOAT NUMBERS TRACEBACKS
CALLABLEMETHODS FORMATTING OBJECTS TRUTHVALUE
CALLS FRAMEOBJECTS OPERATORS TUPLELITERALS
CLASSES FRAMES PACKAGES TUPLES
CODEOBJECTS FUNCTIONS POWER TYPEOBJECTS
COMPARISON IDENTIFIERS PRECEDENCE TYPES
COMPLEX IMPORTING PRIVATENAMES UNARY
CONDITIONAL INTEGER RETURNING UNICODE
CONTEXTMANAGERS LISTLITERALS SCOPING
CONVERSIONS LISTS SEQUENCEMETHODS
Introduzcamos uno de esos temas de ayuda:
help> POWER
The power operator
******************
The power operator binds more tightly than unary operators on its
left; it binds less tightly than unary operators on its right. The
syntax is:
power ::= (await_expr | primary) ["**" u_expr]
Thus, in an unparenthesized sequence of power and unary operators, the
operators are evaluated from right to left (this does not constrain
the evaluation order for the operands): "-1**2" results in "-1".
The power operator has the same semantics as the built-in "pow()"
function, when called with two arguments: it yields its left argument
raised to the power of its right argument. The numeric arguments are
first converted to a common type, and the result is of that type.
For int operands, the result has the same type as the operands unless
the second argument is negative; in that case, all arguments are
converted to float and a float result is delivered. For example,
"10**2" returns "100", but "10**-2" returns "0.01".
Raising "0.0" to a negative power results in a "ZeroDivisionError".
Raising a negative number to a fractional power results in a "complex"
number. (In earlier versions it raised a "ValueError".)
This operation can be customized using the special "__pow__()" and
"__rpow__()" methods.
Related help topics: EXPRESSIONS
help>
En general, los textos de ayuda suelen ser bastante técnicos. Si el texto es muy extenso, IDLE se limitará a mostrar un enlace:
help> STRINGS
Squeezed text (184 lines)
y pulsando en ese enlace con el botón secundario del ratón, se mostrará el texto en una ventana aparte.
Se sale de la sesión de ayuda con el comando quit
help> quit
Podemos obtener ayuda sobre un tema concreto. desde el prompt interactivo >>>.
Para ello, invocar la función help() pasando como argumento el texto a consultar.
Por ejemplo, para obtener la lista de módulos instalados:
>>> help("modules")
La documentación de Python¶
El sistema de ayuda del shell es un primer recurso, pero ¿como podemos consultar la documentación oficial de Python? El portal de ayuda on-line está en la página web https://docs.python.org/es/