Manual de Phyton PDF
Manual de Phyton PDF
Manual de Phyton PDF
“Python fue creado a finales de los ochentas por Guido van Rossum en el Centro para las
Matemáticas y la Informática (CWI, Centrum Wiskunde & Informatica), en los Países Bajos,
como un sucesor del lenguaje de programación ABC, capaz de manejar excepciones e
interactuar con el sistema operativo Amoeba. El nombre del lenguaje proviene de la afición
de su creador por los humoristas británicos Monty Python. Van Rossum es el principal autor
de Python, y su continuo rol central en decidir la dirección de Python es reconocido,
refiriéndose a él como Benevolente Dictador Vitalicio (en inglés: Benevolent Dictator for Life,
BDFL)”.
Su creador, Guido van Rossum dio una interesante entrevista en donde nos platica sus
inicios en el cómputo en Holanda, de la creación de Python y del haber llegado a DropBox en
San Francisco. He aquí algunas de las preguntas relevantes:
2
4 años de un fuerte trabajo en ese proyecto, éste quedó descontinuado, y pasé a otros
proyectos en CWI. Trabajé en un sistema operativo llamado Amoeba (que tiene influencia de
Andrew Tanenbaum) y en algún momento me cansé de escribir apps en C. Pensé entonces
en ABC, el cual tenía muy buenas características pero decidí que portar el lenguaje no sería
satisfactorio. No me gustaba Perl 3 tampoco, por lo que decidí crear mi lenguaje inspirado en
ABC y C. Tomé todo lo que me gustaba de ABC y quité todo lo que me disgustaba, muchas
veces copiándolo de C.
P: Python es un lenguaje que es muy popular para enseñar a los chicos a programar.
¿Por qué debería alguien empezar eligiendo Python?
R: Comparado con otros lenguajes, excepto tal vez Scratch, la sintaxis y comportamiento de
Python es la más intuitiva y fácil de aprender. Pero al contrario de Scratch, Python no es
solamente para aprender a programar. Es uno de los lenguajes más populares de
programación entre los profesionales.
P: Denos algún consejo para los jóvenes interesados en una carrera en programación.
R: Encuentren algo que les guste hacer. En la medida que usen más tiempo en ello, se
convertirán en mejores en eso que hayan elegido y entonces podrán tener un nivel de
competencia razonable. Además, el divertirse haciendo esto significa que se tiene más
diversión.
3
Usando el intérprete de Python
Invocando al intérprete
Por lo general, el intérprete de Python se instala en /usr/local/bin/python3.6 en las máquinas
dónde está disponible; poner
/usr/local/bin en el camino de búsqueda de tu intérprete de comandos Unix hace posible
iniciarlo ingresando la orden:
python3.6
...en la 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; consultá a tu Gurú Python local o
administrador de sistemas. (Por ejemplo, /usr/local/python es una alternativa popular).
set path=%path%;C:\python36
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) en el prompt primario. Si esto no funciona, se puede
salir del intérprete ingresando: quit().
Las características para editar líneas del intérprete incluyen edición interactiva, sustitución
usando el historial y completado de código en sistemas que soportan readline. Tal vez la forma
más rápida de detectar si las características de edición están presentes es ingresar Control-P
en el primer prompt de Python que aparezca. Si se escucha un beep, las características están
presentes; ver Apéndice Edición de entrada interactiva y sustitución de historial para una
introducción a las teclas. Si no pasa nada, o si aparece ^P, estas características no están
disponibles; solo vas a poder usar backspace para borrar los caracteres de la línea actual.
4
Una segunda forma de iniciar el intérprete es python -c comando [arg] ..., que ejecuta las
sentencias en comando, similar a la opción -c de la línea de comandos. Ya que las sentencias
de Python suelen tener espacios en blanco u otros caracteres que son especiales en la línea
de comandos, es normalmente recomendado citar comando entre comillas dobles.
Algunos módulos de Python son también útiles como scripts. Pueden invocarse usando python
-m module [arg] ..., que ejecuta el código de module como si se hubiese ingresado su nombre
completo en la línea de comandos.
Cuando se usa un script, a veces es útil correr primero el script y luego entrar al modo
interactivo. Esto se puede hacer pasándole la opción -i antes del nombre del script.
Modo interactivo
Se dice que estamos usando el intérprete en modo interactivo, cuando los comandos son
leídos desde una terminal. En este modo espera el siguiente comando con el prompt primario,
usualmente tres signos mayor-que (>>>); para las líneas de continuación espera con el prompt
secundario, por defecto tres puntos (...). Antes de mostrar el prompt primario, el intérprete
muestra un mensaje de bienvenida reportando su número de versión y una nota de copyright:
$ python3.6 Python 3.6 (default, Sep
16 2015, 09:25:04)
[GCC 4.8.2] on linux Type "help", "copyright", "credits" or
"license" for more information.
>>>
5
Las líneas de continuación son necesarias cuando queremos ingresar un constructor
multilínea. Como en el ejemplo, mirá la
sentenciaif :
>>> el_mundo_es_plano =
True >>> if
el_mundo_es_plano:
... print( ) "¡Tené cuidado de no
... caerte!"
¡Tené cuidado de no caerte!
Para más información sobre el modo interactivo, ve a Modo interactivo.
El intérprete y su entorno
Codificación del código fuente
Por default, los archivos fuente de Python son tratados como codificados en UTF-8. En esa
codificación, los caracteres de la mayoría de los lenguajes del mundo pueden ser usados
simultáneamente en literales, identificadores y comentarios, a pesar de que la biblioteca
estándar usa solamente caracteres ASCII para los identificadores, una convención que debería
seguir cualquier código que sea portable. Para mostrar estos caracteres correctamente, tu
editor debe reconocer que el archivo está en UTF-8 y usar una tipografía que soporte todos
los careacteres del archivo.
Para especificar una codificación distinta de la por defecto, un línea de comentario especial
debe ser agregada como la primera línea del archivo. La sintaxis es como sigue:
Por ejemplo, para indicar que el encoding Windows-1252 es el usado, la primera línea de tu
código fuente debe ser:
# -*- coding: cp-1252 -*-
Una excepción a la regla de la primera línea es cuando el código fuente comienza con UNIX
"shebang" line. En este caso, la declaración del encoding debe ser agregada como la segunda
línea del archivo. Por ejempo:
6
#!/usr/bin/env python3
# -*- coding: cp-1252 -*-
7
1 En Unix, el intérprete de Python 3.x no se instala por default con el ejecutable
llamado python para que no conflictúe con un ejecutable de Python 2.x
que esté instalado simultaneamente.
Algunos ejemplos:
# este es el primer comentario
spam = 1 # y este es el segundo
comentario # ... y ahora un
tercero! text = "# Este no es un comentario".
8
Usar Python como una calculadora
Vamos a probar algunos comandos simples en Python. Iniciá un intérprete y
esperá por el prompt primario, >>>. (No debería demorar tanto).
Números
El intérprete actúa como una simple calculadora; podés ingresar una expresión
y este escribirá los valores. La sintaxis es sencilla: los operadores +, -, * y /
funcionan como en la mayoría de los lenguajes (por ejemplo, Pascal o C); los
paréntesis (()) pueden ser usados para agrupar. Por ejemplo:
>>> 2 + 2
4 >>> 50 -
5*6
20 >>> (50 -
5*6) / 4
5.0
>>> 8 / 5 # la división simpre retorna un número de punto flotante
1.6
Los números enteros (por ejemplo 2, 4, 20) son de tipo int, aquellos con una
parte fraccional (por ejemplo 5.0, 1.6) son de tipo float. Vamos a ver más sobre
tipos de números luego en este tutorial.
La división (/) siempre retorna un punto flotante. Para hacer floor division y
obtener un resultado entero (descartando cualquier resultado fraccional) podés
usar el operador //; para calcular el resto podés usar %:
9
>>> 5 ** 2 # 5 al cuadrado
25 >>> 2 ** 7 # 2 a la potencia de 7
128
El signo igual (=) es usado para asignar un valor a una variable. Luego, ningún
resultado es mostrado antes del próximo prompt:
>>> ancho = 20
>>> largo = 5 * 9 >>> ancho * largo
900
10
Esta variable debería ser tratada como de sólo lectura por el usuario. No le
asignes explícitamente un valor; crearás una variable local independiente con el
mismo nombre enmascarando la variable con el comportamiento mágico.
Además de int y float, Python soporta otros tipos de números, como ser Decimal
y Fraction. Python también tiene soporte integrado para númreos complejos, y
usa el sufijo j o J para indicar la parte imaginaria (por ejemplo 3+5j).
Cadenas de caracteres
Además de números, Python puede manipular cadenas de texto, las cuales
pueden ser expresadas de distintas formas. Pueden estar encerradas en
comillas simples ('...') o dobles ("...") con el mismo resultado 3. \ puede ser usado
para escapar comillas:
>>> 'huevos y # comillas simples
pan' 'huevos y pan'
>>> 'doesn\'t' # usa \' para escapar comillas simples...
"doesn't"
>>> "doesn't" # ...o de lo contrario usa comillas doblas
"doesn't"
>>> '"Si," le dijo.'
'"Si," le dijo.'
>>> "\"Si,\" le dijo."
'"Si," le dijo.'
>>> '"Isn\'t," she said.'
'"Isn\'t," she said.'
En el intéprete interactivo, la salida de cadenas está encerrada en comillas y los
caracteres especiales son escapados con barras invertidas. Aunque esto a
veces luzca diferente de la entrada (las comillas que encierran pueden cambiar),
las dos cadenas son equivalentes. La cadena se encierra en comillas dobles si
la cadena contiene una comilla simple y ninguna doble, de lo contrario es
encerrada en comillas simples. La función print() produce una salida más legible,
omitiendo las comillas que la encierran e imprimiendo caracteres especiales y
escapados:
11
>>> '"Isn\'t," she said.'
'"Isn\'t," she said.'
>>> '"Isn\'t," she said.' print( )
"Isn't," she said.
>>> s = 'Primerea línea.\nSegunda # \n significa nueva línea
>>> s línea.' # sin print(), \n es incluído en la salida
'Primera línea.\nSegunda línea.' >>> print(s) #
con print(), \n produce una nueva línea Primera
línea.
Segunda línea.
Si no querés que los caracteres antepuestos por \ sean interpretados como
caracteres especiales, podés usar cadenas crudas agregando una r antes de la
primera comilla:
>>> 'C:\algun\nombre' print() # aquí \n significa nueva línea!
C:\algun
ombre
>>> 'C:\algun\nombre' print(r) # nota la r antes de la comilla
C:\algun\nombre
Las cadenas de texto literales pueden contener múltiples líneas. Una forma es
usar triple comillas: """...""" o '''...'''. Los fin de línea son incluídos
automáticamente, pero es posible prevenir esto agregando una \ al final de la
línea. Por ejemplo:
print( """\
Uso: algo
[OPTIONS]
-h Muestra el mensaje de uso
-H nombrehost Nombre del host al cual conectarse
""" )
produce la siguiente salida: (nota que la línea inicial no está incluída)
Uso: algo [OPTIONS]
-h Muestra el mensaje de uso
-H nombrehost Nombre del host al cual
conectarse
12
Las cadenas de texto pueden ser concatenadas (pegadas juntas) con el
operador + y repetidas con *:
>>> # 3 veces 'un', seguido de 'ium'
>>> 3 * 'un' + 'ium'
'unununium'
Dos o más cadenas literales (aquellas encerradas entre comillas) una al lado de
la otra son automáticamente concatenadas:
>>> 'Py' 'thon'
'Python'
Esto solo funciona con dos literales, no con variables ni expresiones:
>>> prefix = 'Py' >>> prefix 'thon' # no se puede concatenar una
variable y una cadena literal ... SyntaxError: invalid syntax
>>> 'un' * 3) 'ium'
( ...
SyntaxError: invalid syntax
Si querés concatenar variables o una variable con un literal, usá +:
>>> prefix + 'thon'
'Python'
13
>>> palabra[-1] # último caracter
'n' >>> palabra[-2] # ante último
caracter
'o' >>>
palabra[-6]
'P'
Nota que -0 es lo mismo que 0, los índice negativos comienzan desde -1.
Además de los índices, las rebanadas también están soportadas. Mientras que
los índices son usados para obtener caracteres individuales, las rebanadas te
permiten obtener sub-cadenas:
Los índices de las rebanadas tienen valores por defecto útiles; el valor por
defecto para el primer índice es cero, el valor por defecto para el segundo índice
es la longitud de la cadena a rebanar.
>>> palabra[:2] # caracteres desde el principio hasta la posición 2 (excluída)
'Py' >>> palabra[4:] # caracterrs desde la posición 4 (incluída)
hasta el final
'on' >>> palabra[-2:] # caracteres desde la ante-última (incluída)
hasta el final
'on'
Una forma de recordar cómo funcionan las rebanadas es pensar en los índices
como puntos entre caracteres, con el punto a la izquierda del primer carácter
14
numerado en 0. Luego, el punto a la derecha del último carácter de una cadena
de n caracteres tienen índice n, por ejemplo:
+---+---+---+---+---+---+
|P|y|t|h|o|n|
+---+---+---+---+---+---+
0 1 2 3 4 5 6
-6 -5 -4 -3 -2 -1
Las cadenas de Python no pueden ser modificadas -- son immutable. Por eso,
asignar a una posición indexada de la cadena resulta en un error:
15
Si necesitás una cadena diferente, deberías crear una nueva:
>>> 'J' + palabra[1:]
'Jython' >>>
palabra[:2] + 'py'
'Pypy'
La función incorporada len() devuelve la longitud de una cadena de texto:
>>> s = 'supercalifrastilisticoespialidoso'
>>> len(s)
33
Ver también
Tipos integrados
Las cadenas de texto son ejemplos de tipos secuencias, y soportan las operaciones
comunes para esos tipos.
Tipos integrados
Las cadenas de texto soportan una gran cantidad de métodos para transformaciones
básicas y búsqueda.
f-strings
Literales de cadena que tienen expresiones embebidas.
formatstrings
Aquí se da información sobre formateo de cadenas de texto con str.format().
Tipos integrados
Aquí se describe con más detalle las operaciones viejas para formateo usadas cuando
una cadena de texto están a la izquierda del operador %.
Listas
Python tiene varios tipos de datos compuestos, usados para agrupar otros
valores. El más versátil es la lista, la cual puede ser escrita como una lista de
valores separados por coma (ítems) entre corchetes. Las listas pueden contener
ítems de diferentes tipos, pero usualmente los ítems son del mismo tipo:
Como las cadenas de caracteres (y todos los otros tipos sequence integrados),
las listas pueden ser indexadas y rebanadas:
16
>>> cuadrados[0] # índices retornan un ítem
1 >>>
cuadrados[-1]
25 >>> cuadrados[-3:] # rebanadas retornan una
nueva lista
[9, 16, 25]
Todas las operaciones de rebanado devuelven una nueva lista conteniendo los
elementos pedidos. Esto significa que la siguiente rebanada devuelve una copia
superficial de la lista:
>>> cuadrados[:]
[1, 4, 9, 16, 25]
A diferencia de las cadenas de texto, que son immutable, las listas son un tipo
mutable, es posible cambiar un su contenido:
>>> cubos = [1, 8, 27, 65, 125] # hay algo mal
aquí >>> 4 ** 3 # el cubo de 4 es 64, no 65!
64
17
>>> letras = 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' [ ]
>>> letras
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> # reemplazar algunos valores
>>> letras[2:5] = []'C' , 'D' , 'E'
>>> letras ['a', 'b', 'C', 'D', 'E', 'f',
'g']
>>> # ahora borrarlas
>>> letras[2:5] = []
>>> letras
['a', 'b', 'f', 'g'] >>> # borrar la lista reemplzando todos los elementos
por una lista vacía
>>> letras[:] = []
>>> letras
[]
La funciónlen() también sirve para las listas:
predefinida
>>> letras = ['a', 'b', 'c', 'd'] >>>
len(letras)
4
Es posible anidar listas (crear listas que contengan otras listas), por ejemplo:
>>> a = 'a' , 'b' , 'c' [ ]
>>> n = [1, 2, 3]
>>> x = [a, n]
>>> x [['a', 'b', 'c'], [1, 2,
3]]
>>> x[0]
['a', 'b', 'c']
>>> x[0][1]
'b'
18
Además de la sentencia while que acabamos de introducir, Python soporta las
sentencias de control de flujo que podemos encontrar en otros lenguajes, con
algunos cambios.
La sentencia
Tal vez el tipo más conocido deif . Por ejemplo:
sentencia sea el
>>> x = "Ingresa un entero, por favor: int(input( ))
Ingresa un "
entero, por favor: 42 >>> if x <
0:
... x=0
... print( ) 'Negativo cambiado a
... elif x == 0: cero'
... print( ) 'Cero'
... elif x == 1:
... print( ) 'Simple'
... else:
... print( ) 'Más'
...
'Mas'
Puede haber cero o más bloques elif, y el bloque else es opcional. La palabra
reservada 'elif' es una abreviación de 'else if', y es útil para evitar un sangrado
excesivo. Una secuencia if ... elif ... elif ... sustituye las sentencias switch o case
encontradas en otros lenguajes.
La sentencia
La sentencia for en Python difiere un poco de lo que uno puede estar
acostumbrado en lenguajes como C o Pascal. En lugar de siempre iterar sobre
19
una progresión aritmética de números (como en Pascal) o darle al usuario la
posibilidad de definir tanto el paso de la iteración como la condición de fin (como
en C), la sentencia for de Python itera sobre los ítems de cualquier secuencia
(una lista o una cadena de texto), en el orden que aparecen en la secuencia. Por
ejemplo:
>>> # Midiendo cadenas de texto
... palabras = [ ] 'gato', 'ventana', 'defenestrado'
>>> for p in
palabras: ...
print(p, len(p)) ...
gato 4 ventana 7
defenestrado 12
Si necesitás modificar la secuencia sobre la que estás iterando mientras estás
adentro del ciclo (por ejemplo para borrar algunos ítems), se recomienda que
hagas primero una copia. Iterar sobre una secuencia no hace implícitamente una
copia.
La notación de rebanada es especialmente conveniente para esto:
>>> for p in palabras[:]: # hace una copia por
rebanada de toda la lista ... if len(p) > 6: ...
palabras.insert(0, p) ...
>>> palabras
['defenestrado', 'ventana', 'gato', 'ventana', 'defenestrado']
Con for w in words:, el ejemplo intentaría crear una lista infinita, insertando
defenestrado una y otra vez.
La función
Si se necesita iterar sobre una secuencia de números, es apropiado utilizar la
función integrada range(), la cual genera progresiones aritméticas:
20