Marco Buttu

El gran libro de Python


Скачать книгу

      El comando chmod de los sistemas Unix modifica los permisos de archivos y directorios. Por ejemplo, si queremos que el propietario del archivo tenga los permisos de ejecución, pasamos +x como argumento de chmod:

image

      En este punto, el archivo puede ser ejecutado directamente desde la línea de comandos. Dado que como primera línea del archivo se encuentra el shebang #! /usr/bin/env python, el archivo se ejecutará con Python:

image

      Para más información acerca del comando chmod y sobre la escritura ./ utilizada en el ejemplo anterior, podemos consultar el Apéndice A.

      Por defecto, en Python 3 el intérprete utiliza la codificación UTF-8 para descodificar el contenido de los módulos. Pero, si queremos escribir el código utilizando una codificación diferente, también podemos hacerlo, siempre y cuando el intérprete sea informado de ello. Podemos especificar la codificación utilizada insertando en el módulo un comentario especial debajo del shebang, que contenga coding:nome o coding=nome:

image

      NOTA

      Normalmente, este comentario especial que acabamos de mostrar en el ejemplo contiene los tres caracteres -*- antes o después de la indicación del código. Esta sintaxis se inspira en la escritura que se utiliza con Emacs para definir las variables locales en un archivo. Pero para Python estos símbolos no significan nada, puesto que el programa comprobará que en el comentario aparece la indicación coding:nome o coding=nome, sin prestar atención al resto.

      Ejecución de cadenas pasadas desde la línea de comandos

      Cuando el intérprete es llamado mediante la opción -c, este acepta como argumento una cadena que contiene instrucciones Python y las ejecuta:

image

      Utilizaremos a menudo esta modalidad de ejecución durante todo el libro.

      En esta sección hablaremos de aspectos carácterísticos de Python, de los principales tipos integrados, de la definición de funciones y clases, de los archivos, de la librería estándar y de los módulos. Esta pretende ser solo una breve introducción al lenguaje, puesto que hablaremos con más profundidad de estos aspectos en el resto del libro.

      Indentación del código

      En Python un bloque de código anidado no está delimitado por palabras clave o por llaves sino por el signo de dos puntos y la indentación (sangría) misma del código:

image image

      NOTA

      Por bloque de código anidado entendemos el código interno a una clase, a una función, a una instrucción o sentencia if, a un bucle for, a un bucle while y demás. Solo los bloques de código anidados van precedidos por una instrucción que termina con el signo de los dos puntos. Más adelante veremos que los bloques anidados son la suite de las instrucciones compuestas o de las relativas cláusulas.

      La indentación debe ser la misma para todo el bloque, por lo que el número de espacios en blanco (espacios o tabulaciones) es importante:

image

      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:

image

      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:

image

      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:

image

      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:

image

      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:

image

      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.