El gran libro de Python. Marco Buttu
Чтение книги онлайн.
Читать онлайн книгу El gran libro de Python - Marco Buttu страница 7
En la PEP-0008 se aconseja utilizar cuatro espacios para cada nivel de indentación y no mezclar nunca espacios y tabulaciones.
NOTA
Si utilizamos Vim como editor y queremos que los bloques de código se indenten automáticamente con cuatro espacios, podemos escribir en el archivo de configuración .vimrc las siguientes líneas:
A menudo tendremos que editar archivos escritos por otras personas, los cuales contengan indentaciones con tabulaciones. En estos casos, con Vim, una vez efectuada la configuración indicada, podemos convertir todas las tabulaciones del archivo en espacios mediante el comando retab.
Utilizar a la vez espacios y tabulaciones para indentar instrucciones en el mismo bloque es un error:
NOTA
En Python 3, a diferencia de Python 2, también es un error pasar de espacios a tabulaciones (o viceversa) al cambiar de nivel de indentación, como se muestra en la sección titulada Uso inconsistente de espacios y tabulaciones del Apéndice B.
Por tanto, la indentación es un requisito del lenguaje y no una cuestión de estilo, y esto supone que todos los programas Python tengan el mismo aspecto. Pero quizás un día las cosas cambien, y podremos utilizar también llaves para delimitar los bloques de código:
No, esta posibilidad no existe, por lo que las discusiones acerca de cómo indentar y posicionar los delimitadores de los bloques no tienen razón de ser (consulte la PEP-0666), y todo esto está perfectamente en línea con el Zen de Python, según el cual, como veremos dentro de poco, "debería haber un modo obvio, y preferiblemente uno solo, de hacer las cosas". Este único modo obvio de hacer las cosas se denomina pythonic way. Finalmente, como ya sabemos, no es necesario terminar las instrucciones con un punto y coma, sino que basta con saltar a una nueva línea. En cambio, el punto y coma es necesario para insertar más instrucciones en la misma línea:
Insertar varias instrucciones en la misma línea es de un estilo de programación pésimo, y de hecho está desaconsejado por la PEP-0008. En el resto del libro utilizaremos el punto y coma solo para ejecutar cadenas desde la línea de comandos:
NOTA
Existen distintas herramientas que permiten comprobar si nuestro código respeta la PEP-0008. Podemos realizar un rápido chequeo online con http://pep8online.com/, o bien, como alternativa, podemos utilizar pep8 (https:// pypi.python.org/pypi/pep8) o pyflakes. También están disponibles otros plugins que permiten efectuar la comprobación con Vim.
Los objetos integrados
Cuando un programa es ejecutado, Python, a partir del código, genera estructuras de datos, denominados objetos, sobre las cuales basa después todo el proceso de elaboración. Los objetos se almacenan en la memoria del ordenador, para que puedan ser llamados cuando el programa se refiere a ellos. En el momento en que ya no sirven, un mecanismo singular, denominado garbage collector, libera la memoria que ocupaban. Esta primera descripción de un objeto puede ser demasiado abstracta para que entendamos de qué se trata realmente. No nos preocupemos, puesto que es suficiente para la finalidad de esta sección y veremos otras más formales y concretas en su momento. Los objetos que constituyen el corazón de Python, denominados objetos integrados, se dividen habitualmente en las siguientes categorías: tipos de datos básicos, funciones integradas, clases y tipos de excepciones integradas. Aquí realizaremos solo una breve aproximación a los objetos integrados, puesto que les dedicaremos todo el Capítulo 2.
Tipos de datos básicos
Aquello a lo que llamamos tipos de datos básicos no es más que el conjunto de los principales tipos integrados. Estos pueden ser agrupados en cuatro categorías:
• números: enteros (tipo int), booleanos (bool), complejos (complex), de punto flotante (float);
• conjuntos: representados por el tipo set;
• secuencias: cadenas (str y byte), listas (list) y tuplas (tuple);
• diccionarios: representados por el tipo dict.
Los tipos de datos básicos pertenecen a una categoría de objetos llamados clases, o también tipos. La carácterística de los tipos, como su nombre indica, es la de representar un tipo de dato genérico, a partir del cual podamos crear objetos específicos de dicho tipo, llamados instancias. Por ejemplo, a partir del tipo str podemos crear las instancias "python", "Guido" y"abc"; a partir del tipo int las instancias 22 y 77; a partir del tipo list las instancias [1, 2, 3] y ['a', 'b', 'c', 'd'], y así para el resto de tipos. Por lo tanto, diremos que una cadena de texto es un objeto de tipo str, o, lo que es lo mismo, que es una instancia del tipo str. Del mismo modo, diremos que un entero es un objeto del tipo int, o, lo que es lo mismo, una instancia del tipo int, y así para los números de punto flotante, las listas, etc.
Algunos objetos son fáciles de imaginar debido a que tienen muy en cuenta tanto el concepto de valor como el de tipo, como en el caso de las instancias de los tipos numéricos:
Su tipo, como el de cualquier otro objeto, puede obtenerse a partir de la clase integrada type:
Los objetos están siempre carácterizados por un tipo, mientras que solo a alguno de ellos podemos asociarle de manera intuitiva un valor. Además del tipo, otros elementos carácterísticos de los objetos son la identidad y los atributos.
La identidad está representada por un número que los identifica de manera única, y es devuelta por la función integrada id():
Los atributos son identificadores accesibles mediante el delimitador punto:
En este ejemplo bit_length, as_integer_ratio e imag son atributos, respectivamente, de a, b y c. Los atributos están estrechamente vinculados al tipo de un objeto. Por ejemplo, todos los objetos de tipo str tienen el atributo str.upper(), el cual devuelve una versión de la cadena en mayúsculas:
y todos los objetos de tipo list tienen el atributo list.sort() que reordena los elementos de la lista: