PDF de programación - Python no muerde

Imágen de pdf Python no muerde

Python no muerdegráfica de visualizaciones

Publicado el 4 de Mayo del 2018
1.865 visualizaciones desde el 4 de Mayo del 2018
718,6 KB
97 paginas
Creado hace 2a (05/11/2017)
Python no muerde Documentation
Versión 2.0

Roberto Alsina (actualización por Martín Gait

05 de noviembre de 2017

1. Introducción

.
1.1. Requisitos
.
.
1.2. Convenciones .
.
1.3. Lenguaje .
.
1.4. Mapa .
.
.
.
1.5. Acerca del Autor .

.
.
.
.

.

.

.
.

Índice general

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3
3
4
4
4
5

I

II

Python no muerde Documentation, Versión 2.0

Autor Roberto Alsina <ralsina@netmanagers.com.ar>
Versión $Revision: 8e80f80bdea9 $

Índice general

1

Python no muerde Documentation, Versión 2.0

2

Índice general

CAPÍTULO 1

Introducción

1.1 Requisitos

Éste es un libro sobre Python1. Es un libro que trata de explicar una manera posible de usarlo, una manera de tomar
una idea de tu cabeza y convertirla en un programa, que puedas usar y compartir.
¿Qué necesitás saber para poder leer este libro?
El libro no va a explicar la sintaxis de python, sino que va a asumir que la conocés. De todas formas, la primera vez
que aparezca algo nuevo, va a indicar dónde se puede aprender más sobre ello. Por ejemplo:

# Creamos una lista con los cuadrados de los números pares
cuadrados = [ x**2 for x in numeros if x%2 == 0 ]

Referencia
Eso es una comprensión de lista

En general esas referencias van a llevarte al Tutorial de Python en castellano. Ese libro contiene toda la información
acerca del lenguaje que se necesita para poder seguir éste.
Cuando una aplicación requiera una interfaz gráfica, vamos a utilizar PyQt2. No vamos a asumir ningún conocimiento
previo de PyQt pero tampoco se va a explicar en detalle, excepto cuando involucre un concepto nuevo.
Por ejemplo, no voy a explicar el significado de setEnabled3 pero sí el concepto de signals y slots cuando haga
falta.

1 ¿Por qué Python? Porque es mi lenguaje favorito. ¿De qué otro lenguaje podría escribir?
2 PyQt es software libre, es multiplataforma, y es muy potente y fácil de usar. Eso no quiere decir que las alternativas no tengan las mismas
características, pero quiero enfocarme en programar, no en discutir, y yo prefiero PyQt. Si preferís una alternativa, este libro es libre: podés hacer
una versión propia!

3 PyQt tiene una excelente documentación de referencia para esas cosas.

3

Python no muerde Documentation, Versión 2.0

1.2 Convenciones

Las variables, funciones y palabras reservadas de python se mostrarán en el texto con letra monoespaciada. Por ejem-
plo, for es una palabra reservada.
Los fragmentos de código fuente se va a mostrar así:

# Creamos una lista con los cuadrados de los números impares
cuadrados = [ x**2 for x in numeros if x%2 > 0 ]

Los listados extensos o programas completos se incluirán sin cajas, mostrarán números de líneas e indicarán el nombre
del mismo:
titulo-listado

cuadrados.py
class listado

1

2

# Creamos una lista con los cuadrados de los números impares
cuadrados = [ x**2 for x in numeros if x%2 > 0 ]

En ese ejemplo, debería haber, en los ejemplos que acompañan al libro, un archivo codigo/X/cuadrados.py
donde X es el número del capítulo en el que el listado aparece.

1.3 Lenguaje

Las discusiones acerca de como escribir un libro técnico en castellano son eternas. Que en España se traduce todo todo
todo. Que en Argentina no. Que decir “cadena de caracteres” en lugar de string es malo para la ecología.
Por suerte en este libro hay un único criterio superador que ojalá otros libros adopten: Está escrito como escribo yo.
Ni un poquito distinto. No creo que siquiera califique como castellano, como mucho está escrito en argentino. Si a los
lectores de la ex madre patria les molesta el estilo... tradúzcanlo.

1.4 Mapa

Dentro de lo posible, voy a intentar que cada capítulo sea autocontenido, explicando un tema sin depender demasiado
de los otros, y terminando con un ejemplo concreto y funcional.
Éstos son los capítulos del libro, con breves descripciones.

1. Introducción
2. Pensar en python

Programar en python, a veces, no es como programar en otros lenguajes. Acá vas a ver algunos ejemplos. Si te
gustan... python es para vos. Si no te gustan... bueno, el libro es barato... capaz que Java es lo tuyo..

3. La vida es corta

Por eso, hay muchas cosas que no vale la pena hacer. Claro, yo estoy escribiendo un editor de textos así que este
capítulo es pura hipocresía...
4. Las capas de una aplicación

Batman, los alfajores santafesinos, el ozono... las mejores cosas tienen capas. Cómo organizar una aplicación en
capas.

4

Capítulo 1.

Introducción

Python no muerde Documentation, Versión 2.0

5. Documentación y testing

Documentar es testear. Testear es documentar.

6. La GUI es la parte fácil

Lo difícil es saber que querés. Lamentablemente este capítulo te muestra lo fácil. Una introducción rápida a
PyQt.

7. Diseño de interfaz gráfica

Visto desde la mirada del programador. Cómo hacer para no meterse en un callejón sin salida. Cómo hacerle
caso a un diseñador.

8. Un programa útil

Integremos las cosas que vimos antes y usémoslas para algo.

9. Instalación, deployment y otras yerbas

Hacer que tu programa funcione en la computadora de otra gente

10. Cómo crear un proyecto de software libre

¿Cómo se hace? ¿Qué se necesita? ¿Me conviene? Las respuestas son “depende”, “ganas” y “a veces”. O “así”,
“una idea” y “sí”. O sea, no sé. Pero veamos.

11. Rebelión contra el Zen

Cuándo es mejor implícito que explícito? ¿Cuándo es algo lo suficientemente especial para ser, realmente,
especial?

12. Herramientas

Programar tiene más en común con la carpintería que con la arquitectura.

13. Conclusiones, caminos y rutas de escape

¿Y ahora qué?

Este es un diagrama de dependencias. Cada capítulo tiene flechas que lo conectan desde los capítulos que necesitás
haber leído anteriormente.
Con suerte será un grafo acíclico.
La línea de puntos significa ‘no es realmente necesario, pero...’

1.5 Acerca del Autor

Habrá que pedirle a alguien que ponga algo no demasiado insultante.

1.5.1 Tabla de contenidos

Pensar en Python

Lo triste es que esta pobre gente trabajó mucho más de lo necesario, para producir mucho más código del
necesario, que funciona mucho más lento que el código python idiomático correspondiente.

—Phillip J. Eby en Python no es Java

1.5. Acerca del Autor

5

Python no muerde Documentation, Versión 2.0

dependencias.graph.pdf

Figura 1.1: Este libro se lee siguiendo las flechas.

Nuestra misión en este capítulo es pensar en qué quiere decir Eby con “código python idiomático” en esa cita. Nunca
nadie va a poder hacer un pythonómetro que te mida cuán idiomático es un fragmento de código, pero es posible
desarrollar un instinto, una “nariz” para sentir el “olor a python”, así como un enófilo1 aprende a distinguir el aroma a
clavos de hierro-níquel número 7 ligeramente oxidados en un Cabernet Sauvignon.2
Y si la mejor forma de conocer el vino es tomar vino, la mejor forma de conocer el código es ver código. Este capítulo
no es exhaustivo, no muestra todas las maneras en que python es peculiar, ni todas las cosas que hacen que tu código
sea “pythonic” – entre otros motivos porque no las conozco – pero muestra varias. El resto es cuestión de gustos.

Get/Set

Una instancia de una clase contiene valores. ¿Cómo se accede a ellos? Hay dos maneras. Una es con “getters y setters”,
y estas son algunas de sus manifestaciones:

# Un getter te "toma" (get) un valor de adentro de un objeto y
# se puede ver así:
x1 = p.x()
x1 = p.get_x()
x1 = p.getX()

# Un setter "mete" un valor en un objeto y puede verse así:
p.set_x(x1)
p.setX(x1)

Otra manera es simplemente usar un miembro x de la clase:

p.x = x1
x1 = p.x

1 En mi barrio los llamábamos curdas.
2 Con la esperanza de ser un poco menos pretencioso y/o chanta, si Zeus quiere.

6

Capítulo 1.

Introducción

Python no muerde Documentation, Versión 2.0

La ventaja de usar getters y setters es el “encapsulamiento”. No dicta que la clase tenga un miembro x, tal vez el valor
que yo ingreso via setX es manipulado, validado, almacenado en una base de datos, o tatuado en el estómago de
policías retirados con problemas neurológicos, lo único que importa es que luego cuando lo saco con el getter me dé
lo que tenga que dar (que no quiere decir “me dé lo mismo que puse”).
Muchas veces, los getters/setters se toman como un hecho de la vida, hago programación orientada a objetos => hago
getters/setters.
Bueno, no.

Analogía rebuscada
En un almacén, para tener un paquete de yerba, hay que pedírselo al almacenero. En un supermercado, para tener un
paquete de yerba, hay que agarrar un paquete de yerba. En una farmacia (de las grandes), para obtener un paquete de
yerba hay que agarrar un paquete de yerba, pero para tener un Lexotanil hay que pedirlo al farmacéutico.
En Java o C++, la costumbre es escribir programas como almacenes, porque la alternativa es escribir supermercados
donde chicos de 5 compran raticida.
En Python, la costumbre es escribir programas como supermercados, porque se pueden convertir en farmacias apenas
decidamos que tener raticida es buena idea.

Imaginemos que estamos escribiendo un programa que trabaja con “puntos” o sea coordenadas (X,Y), y que queremos
implementarlos con una clase. Por ejemplo:
titulo-listado

Listado 1
class listado

class Punto(object):

def __init__(self, x=0, y=0):

self.set_x(x)
self.set_y(y)

def x(self):

return self._x

def y(self):

return self._y

def set_x(self,x):

self._x=x

def set_y(self,y):

self._y=y

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

Esa es una implementación perfectamente respetable de un punto. Guarda X, guarda Y, permite volver a averiguar sus
valores... el problema es que eso no es python. Eso es C++. Cl
  • Links de descarga
http://lwp-l.com/pdf10829

Comentarios de: Python no muerde (1)

24 de Mayo del 2018
estrellaestrellaestrellaestrellaestrella
No ha dejado ningún comentario
Responder

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad