El gran libro de Python. Marco Buttu
Чтение книги онлайн.
Читать онлайн книгу El gran libro de Python - Marco Buttu страница 8
Todos los números complejos tienen el siguiente atributo:
y este es llamable. Cuando lo llamamos, nos devuelve el complejo conjugado del número:
Podemos descubrir si un objeto es llamable gracias a la función integrada callable():
Si intentamos llamar a un objeto que no es llamable, obtenemos un error:
Los objetos llamables se distinguen de los que no lo son por el hecho de que permiten ejecutar una serie de operaciones, o bien un bloque de instrucciones. Las funciones, por ejemplo, son objetos llamables. Para aclarar mejor este concepto, consideremos la función integrada sum:
esta es un objeto llamable:
y si la llamamos, ejecuta la suma de los elementos del objeto que pasamos como argumento:
Si en una llamada no debemos pasar ningún argumento, igualmente utilizaremos los paréntesis:
Los parentesis, de hecho, indican que queremos ejecutar las operaciones que pertenecen al objeto llamable.
Los atributos llamables se denominan métodos. Según cuanto hemos dicho hasta ahora, la diferencia entre los métodos y los otros atributos es que los primeros pueden ser llamados para ejecutar operaciones, mientras que los segundos no. Consideremos de nuevo el número complejo c = 1 + 2j:
Sus atributos c.real y c.imag no son métodos y, por tanto, no pueden ser llamados. En cambio, el atributo c.conjugate es un método y al ser llamado ejecuta la operación c.real - c.imag y devuelve el resultado:
NOTA
En este libro, cuando en el texto escribamos el identificador de un método o de una función, utilizaremos los paréntesis. Por ejemplo, escribiremos c.conjugate() e id() y no c.conjugate e id para indicar el método coniugate() de los números complejos y la función integrada id(). En cambio, cuando hablemos de las clases, aunque son objetos llamables, no utilizaremos los paréntesis, por lo que escribiremos, por ejemplo, type y no type(). En el Capítulo 6, cuando hablemos del modelo a objetos de Python y de las meta-clases, entenderemos por qué tiene sentido la distinción entre objetos que son clases y objetos que no lo son.
Sustancialmente, los métodos son funciones y, de hecho, son definidos como tales, como veremos en la sección Definir las clases.
Si estos conceptos os parecen demasiado abstractos, no os preocupéis, puesto que los retomaremos más de una vez en este libro y los afrontaremos de manera exhaustiva en el Capítulo 5, cuando presentemos la programación orientada a objetos y veamos en detalle los distintos tipos de método.
La función integrada dir() devuelve una lista de los nombres de los atributos más significativos de un objeto:
Todos los atributos que empiezan y terminan con un doble guion bajo se denominan atributos especiales o también atributos mágicos. Veremos el significado de alguno de ellos en este capítulo y en los dos siguientes, mientras que del resto hablaremos de forma más profunda en el Capítulo 6.
La función integrada hasattr() nos dice si un objeto tiene cierto atributo:
Veamos ahora los tipos de datos básicos. Como ya hemos dicho, esta será solo una breve introducción, puesto que los trataremos con detalle en el Capítulo 2.
Las cadenas de texto
Las cadenas de texto en Python están representadas por una secuencia de caracteres Unicode de longitud arbitraria, encerrados entre comillas simples, comillas, tres comillas simples o tres comillas.
Una cadena de texto es un objeto de tipo str:
y sus elementos están ordenados, lo que significa que a cada uno de ellos se le asocia un número entero llamado índice, que vale 0 para el elemento más a la izquierda y aumenta en una unidad progresivamente para el resto, yendo ordenadamente de izquierda a derecha.
Por este motivo, las cadenas de caracteres pertenecen a la categoría de las secuencias, la cual comprende todos los tipos integrados que representan contenedores ordenados de longitud arbitraria (cadenas, listas y tuplas).
El método str.index() devuelve el índice de la primera aparición del elemento pasado como argumento:
También es posible completar la operación inversa, es decir, obtener un elemento de la cadena de caracteres utilizando como palabra clave el índice.
Esta operación se denomina indexación (indexing) y se lleva a cabo mediante la siguiente sintaxis:
Otra operación que podemos realizar con los índices es la fragmentación (slicing), que permite obtener los elementos de una cadena comprendidos entre dos índices arbitrarios:
Las operaciones de indexación y de fragmentación son habituales en todos los objetos que pertenecen a la categoría de las secuencias. Esta categoría se encuentra dentro de otra más genérica, la de los objetos iterables, de los cuales hablaremos en la sección Objetos iterables, iteradores y contexto de iteración al final de este capítulo.