0% encontró este documento útil (0 votos)
3 vistas46 páginas

Python-01

UIY

Cargado por

David
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
3 vistas46 páginas

Python-01

UIY

Cargado por

David
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 46

Fastbook 01

Programación en Python
Introducción a Python
Edix Educación

01. Introducción a Python

¡Bienvenidos a Programación en Python! En este primer fastbook vamos a


introducirnos en el mundo de Python. Comenzaremos con sus principales
características y las ventajas que nos proporciona como lenguaje, y aprenderemos a
trabajar en Jupyter Notebook, un entorno interactivo de desarrollo. Posteriormente,
nos adentraremos en Python explicando qué son los módulos y cómo utilizarlos,
veremos sus tipos b ásicos de datos y cómo operar con ellos.

Autor: Jesús Aguirre Pemán

¿Qué es Python?

Anaconda y los entornos de trabajo

Jupyter Notebook

Características de Python

Módulos

Tipos de datos

Operaciones de comparación

Conclusiones

Test nal
Lección 1 de 9

¿Qué es Python?
Edix Educación

Breve historia de Python

Python es un lenguaje de programación creado por el neerlandés Guido van Rossum a finales de
la década de 1980 y publicado por primera vez en 1991.

Fue concebido como un lenguaje de programación sencillo de

leer y de utilizar, y con un enfoque multipropósito.

Desde su publicación, se han lanzado las versiones 1.0 (1994), 2.0 (2000) y 3.0 (2008),

además, lógicamente, de otras intermedias. Es importante tener en cuenta estas tres versiones
principales porque presentan elementos incompatibles entre sí (por ejemplo, la sintaxis de la
función print).

Desde 2001, la Python Software Foundation (PSF), una organización sin ánimo de lucro, se

encarga de la propiedad intelectual del lenguaje. Su nombre, a pesar de las serpientes de su logo,
procede de los humoristas británicos Monty Python (los genios detrás de La vida de Brian). De

hecho, es muy frecuente encontrar en la documentación oficial de Python ejemplos basados en


sketches suyos (por ejemplo, spam).
¿Por qué Python?

Os estaréis preguntando, ¿para qué sirve aprender Python y R conjuntamente? ¿Qué puede
aportar Python que no se pueda conseguir con R?

Un primer punto a favor de Python es su enorme y aún creciente popularidad: según el


índice PYPL de popularidad de lenguajes de programación, Python ocupa el primer puesto
(y a fecha de enero de 2021, casi dobla en puntos al segundo, Java).

¿Y qué es lo que hace a Python un lenguaje tan popular? Sobre todo, su versatilidad. Python
se puede utilizar para desarrollar proyectos de data science (que será nuestro objetivo a lo
largo de esta asignatura), para programación orientada a objetos (también lo veremos al
final de la asignatura), para desarrollo web (utilizando Flask o Django), para
automatización de tareas y un largo etcétera de propósitos.

Otro de los puntos fuertes de Python es su uso generalizado en entornos de producción.


Mientras que para desarrollar pequeños proyectos analíticos es frecuente optar
indistintamente por R o por Python sin perder apenas funcionalidades en esta decisión de
lenguaje; a la hora de integrar esta analítica en un sistema de producción, es más habitual el
uso de Python, ya que está más soportado para este tipo de tareas. Por ejemplo, si queremos
utilizar el servicio de computación en nube de Google Cloud Run, que nos permite levantar
varios contenedores que ejecuten código en paralelo, tenemos la opción de utilizar código
Python, pero no podremos alimentar este servicio con código R.

Al igual que R, Python no solo tiene una gran cantidad de funciones en


su librería estándar, sino que dispone de miles de librerías
adicionales para multitud de ámbitos diferentes, gracias a su facilidad
para crearlas y la gran comunidad de desarrolladores de la que dispone.
A lo largo de esta asignatura exploraremos algunas de las más
importantes, como Numpy o Pandas.
Lección 2 de 9

Anaconda y los entornos de trabajo


Edix Educación

Antes de seguir aprendiendo sobre Python, vamos a detenernos un momento para instalarlo y
configurar el entorno en el que trabajaremos. Para ello, vamos a utilizar Anaconda.

Anaconda es una distribución de Python que incluye, además del propio


Python, otras librerías y programas (como por ejemplo, Jupyter
Notebook o Spyder, que utilizaremos en el curso). Es una forma sencilla
de instalar y con gurar un entorno de trabajo en Python.

Podéis descargar Anaconda desde este link.


Una vez descargado, ejecutáis el instalador y seguís sus pasos. Os saldrá la siguiente ventana,
preguntándoos si queréis añadir Anaconda al PATH.

Con la opción recomendada, deberéis usar la consola de Anaconda (Anaconda prompt) para
realizar instrucciones conda (luego veremos ejemplos). Si, por el contrario, queréis realizar
estos comandos sobre la consola por defecto de vuestro sistema operativo, deberéis marcar

la opción correspondiente.

Desde Anaconda Navigator podemos crear y configurar entornos virtuales de manera sencilla.

Un entorno es un directorio que contiene los paquetes conda que se


hayan instalado. Esto puede ser útil si trabajamos con versiones
distintas de Python, o si queremos crear un ecosistema para un
proyecto donde jemos las versiones y no se actualicen.
Podemos crear un nuevo entorno simplemente haciendo clic en el botón de Create.
Introduciremos el nombre y seleccionaremos la versión de Python que queramos usar en ese
entorno. Para finalizar, haremos clic en Create.
Ahora ya podremos instalar paquetes en nuestro nuevo entorno.

Para cambiar de entorno, simplemente haremos doble clic sobre otro que hayamos definido
(o el entorno base o por defecto).

Si preferís hacer estos pasos (todos o alguno de ellos) con la consola de Anaconda (Anaconda

Prompt), lo haríamos de la siguiente forma.

1 En primer lugar, creamos el entorno con la versión 3.7 de Python:


2 Lo activamos:

3 Podemos instalar librerías con:

4 Y para desactivarlo, utilizaremos el siguiente comando:


Lección 3 de 9

Jupyter Notebook
Edix Educación

Según un reciente artículo en KDNuggets (Here are the Most Popular Python IDEs/Editor),
Jupyter seguía siendo el entorno de desarrollo más utilizado en Python en 2020. A diferencia de
R, donde los desarrolladores se concentran más en RStudio, en Python hay una mayor variedad
de entornos disponibles.

La mayor ventaja de Jupyter es lo interactivo que resulta trabajar en un formato de


notebook, ya que mientras desarrollamos el código podemos ir viendo el resultado
que produce. Además, si queremos montar un informe, la exportación en formato
HTML es inmediata.

La desventaja de utilizar Jupyter puede darse cuando tengamos que editar código que
ya está desarrollado, pero, en estos casos, podemos combinar Jupyter con otros
editores como Spyder o Pycharm, en los que gestionaremos el código que ya haya
sido desarrollado y esté en una fase más estable.

Extensiones de Jupyter Notebook

Una de las funcionalidades más útiles de Jupyter es el conjunto de extensiones con el que
cuenta.

Para instalarlas, utilizaremos el siguiente comando de pip, el sistema de administración de


paquetes de Python. Este sistema busca los paquetes en el repositorio de Python, PyPI.
En el siguiente vídeo podréis ver cómo es la interfaz de
Jupyter Notebook, además de cómo crear un notebook y
comenzar a trabajar en él.

Programación en Python, fb. 01: Crear un notebook en Jup…


Jup…

Y en este segundo vídeo veréis cómo utilizar atajos de


teclado y extensiones para aumentar la productividad.

Programación en Python, fb. 01: Crear un notebook en Jup…


Jup…
Otros entornos de desarrollo

Además de Jupyter, existen otros entornos populares para Python como Spyder o Pycharm.
Ambos son ejemplos de entornos de desarrollo integrado (IDE, integrated development
environment), donde, además del editor de código, tenemos herramientas como depuración y

autocompletado, que en Jupyter están algo más limitadas.

Spyder

Spyder es tal vez el más parecido a RStudio en cuanto a la disposición de los elementos de la
interfaz (podemos dividirla en los cuadros de código, consola, variables y documentación que se
suele tener en RStudio). Además, tenemos highlight de la sintaxis de Python, autocompletado del
código, debug (mediante pdb) e incluso muestra errores (por ejemplo, uso de variables que no se
han definido). Además, ya lo tenéis instalado con Anaconda.

Pycharm

Pycharm es un IDE desarrollado por JetBrains (los creadores de IntelliJ), con lo que tal vez os
sintáis más cómodos con él si habéis programado en Java o Kotlin (el lenguaje para Android).
Tiene unas características muy similares a Spyder, tal vez más completo (tiene soporte para Git,
entre otras cosas) pero algo menos simple de manejar.

Como comentábamos anteriormente, es frecuente combinar el entorno de Jupyter con Spyder o


Pycharm para aprovechar las ventajas de ambos enfoques. Por ejemplo, usando los Notebooks
de Jupyter para explorar; y gestionando el código y realizando pequeños cambios sobre él con
Spyder.
Lección 4 de 9

Características de Python
Edix Educación

A continuación, veamos una serie de características básicas de Python como lenguaje. La mayor
parte de ellas son compartidas con R, pero aprovecharemos esta introducción para recordarlas.

Imprimir por pantalla

Lo primero que se hace en cualquier lenguaje es imprimir Hola Mundo por pantalla, y aquí no

vamos a ser menos. Para imprimir, se utiliza la función print, indicando entre paréntesis el
objeto que se quiera imprimir.

Además, en Jupyter podéis imprimir un objeto simplemente escribiéndolo al final de una celda
de código, sin necesidad de usar la función print. En este caso, veréis cómo aparece en un cuadro
llamado output, o salida de la celda.
La función print imprime un salto de línea al final de los objetos, con lo que si la llamamos dos
veces seguidas, obtendremos dos líneas:

Para evitar esto, podemos especificar que termine la línea con un espacio, como en la imagen.

Ahora, tras imprimir Hola hemos puesto un espacio, con lo que el siguiente print (Mundo)
aparece en la misma línea.

Si ves código Python en el que la función print se usa sin


paréntesis, significa que estás ante código anterior a la
versión 3. ¡Es la forma más fácil de reconocerlo!

Palabras reservadas

Todos los lenguajes cuentan con una serie de palabras reservadas: palabras que no podremos
utilizar para nombrar nuestras variables o funciones. Muchas de ellas son comunes a la mayoría
de los lenguajes de programación.
En la siguiente tabla podéis ver qué palabras están reservadas en Python:

Palabras reservadas en Python

False class from or

None continue global pass

True def if raise

and del import return

as elif in try

assert else is while

async except lambda with

await finally nonlocal yield

break for not

Como veremos posteriormente, las mayúsculas y minúsculas sí que importan en Python: las
tres primeras comienzan por mayúscula, y el resto son todas en minúsculas. Para consultar la
tabla, podéis introducir el comando help(“keywords”).

Veremos la mayoría de las palabras reservadas a lo largo de la


asignatura.
Guía de estilo

Python tiene una serie de guías de estilo llamadas Python enhancement proposals o PEP. La más

conocida y utilizada de ellas es el PEP-8, o la guía de estilo para el código Python. En ella
aparecen una serie de recomendaciones de estilo y ejemplos de buenas y malas prácticas en
códigos Python.

A pesar de que veremos parte de su contenido a lo largo de la


asignatura, os recomiendo que le echéis un vistazo,
especialmente tras finalizar los tres primeros fastbooks,
cuando ya estaréis más familiarizados con la mayoría de los
conceptos que aparecen en ella.

Tipado dinámico

Existen dos formas diferentes de tipado: estático y dinámico:

En un lenguaje de tipado estático (como Java o C), debemos definir el tipo de las
variables al declararlas, y este tipo permanecerá inalterable.

Python es un lenguaje de tipado dinámico, es decir, no es necesario definir el tipo


de la variable, y nos basta con asignarle otro valor para que su tipo cambie.
Comentarios

Al igual que en R, podemos incluir comentarios (texto que proporciona indicaciones o ayuda a
entender el código) mediante el uso de la almohadilla: #. Podemos insertarlos tanto al comienzo
como en mitad de una línea, y todo lo que se encuentre a la derecha de este código quedará como
texto comentado y, por lo tanto, no será ejecutado por el intérprete de Python.

Saltos de línea

En Python podemos realizar saltos de línea utilizando la barra invertida: \. Esto nos será útil
cuando tengamos líneas largas que queramos dividir para aumentar la legibilidad del código.

No obstante, la recomendación de la guía de estilo de Python es utilizar pares sintácticos


(paréntesis, llaves y corchetes). De esta forma, podríamos escribir la sentencia anterior así:
La razón más esgrimida para evitar la barra invertida es que
puede olvidarse fácilmente, así que deberéis ser cuidadosos
cuando la utilicéis.

Indentación

Python utiliza la indentación (o sangrado) para estructurar el código. Este sangrado adicional se

realiza mediante la inclusión de un tabulador o (habitualmente cuatro) espacios. Se recomienda


limitarse a una de estas dos formas y no mezclarlas. Todo el código debe estar en el mismo nivel
de indentación hasta que se llegue a una instrucción donde se indica el cambio de nivel de
indentación mediante dos puntos (:). Al acabar esos bloques, volveremos al nivel anterior.

Algunos ejemplos de instrucciones que cambian este nivel de indentación son definiciones de

funciones, condicionales o bucles.

Veamos un ejemplo con una instrucción condicional.

Esto supone una ligera diferencia respecto a R, donde se utilizan corchetes.

Ejemplo de instrucción condicional en R.


Aunque pueda parecer lo mismo, ya que en R se suele utilizar una indentación estética muy
similar, lo cierto es que en R podríamos escribir el código de la instrucción condicional en una

sola línea, manteniendo intacta su funcionalidad, mientras que en Python la indentación es


totalmente necesaria para el correcto funcionamiento del código.

Uso de punto y coma al nal de las líneas

Al igual que R, Python permite el uso de punto y coma para acabar las líneas, permitiendo así
encadenar varias sentencias a lo largo de una misma línea. Aunque es posible, no es
recomendable, ya que dificulta la lectura del código.

Centrado en objetos

Python tiene una fuerte orientación a objetos, lo que hace que prácticamente todos los
elementos que utilicemos sean objetos, con su tipo, sus datos y sus funciones (o métodos)

asociados a ellos.

En el último fastbook de la asignatura aprenderemos más


sobre la orientación a objetos y cómo definir nuestras
propias clases.
Lección 5 de 9

Módulos
Edix Educación

Los módulos son archivos de Python (extensión .py) que contienen código, entre el que se
pueden encontrar definiciones de variables o funciones. Si importamos estos módulos o
archivos, podremos utilizar dichas funciones desde otro lugar.

Por ejemplo, creemos un módulo modulo.py, donde definiremos una función.

Como veis en la imagen, a su vez nuestro módulo importa otro módulo: la librería numpy, que
estudiaremos a fondo en el fastbook 4. Es más, además de importarlo le asigna un alias, para
que cada vez que utilice funciones o variables de ese módulo solo haga falta escribir np en
lugar de numpy. Vemos que para utilizar elementos del módulo utilizamos la expresión

modulo.elemento.
Podemos importarlo desde otro archivo, ya sea un .py o un notebook. En particular, si
utilizamos Jupyter Notebook, podemos hacer uso de la extensión autoreload para recargar

todos los ficheros que importemos de forma periódica. Así, cuando realicemos cambios en
sus funciones, nos aparecerán actualizadas en el notebook sin tener que repetir el import, lo
cual es muy útil si estamos desarrollando código de forma simultánea en varios ficheros.

También podemos importar funciones concretas de un módulo, para lo que utilizaremos la


palabra reservada from. De esta forma, no necesitaremos usar la fórmula modulo.elemento
para utilizar variables o funciones del módulo.

Si queremos importar todo lo que se encuentra en un módulo utilizaremos *. No es muy


recomendable a menos que sepamos lo que se encuentra en el módulo, ya que podemos tener

conflictos de nombres.
Lección 6 de 9

Tipos de datos
Edix Educación

Variable

Una variable es un contenedor que almacena valores.

Realmente, ese contenedor es una dirección física de la memoria del ordenador que se reserva
para guardar el valor. Las variables se identifican mediante un nombre o identificador.

Los identificadores deben comenzar por una letra o guion bajo, y podemos incluir letras,

números y guiones bajos en ellos. Se recomienda utilizar identificadores que guarden relación
con el contenido de la variable para aumentar la legibilidad del código (por ejemplo, si creamos
una variable que almacene el número de meses de inversión publicitaria en TV, es recomendable
llamarla meses_inversion_TV, en lugar de inv, o n).

Python proporciona los tipos básicos de variables que tenemos en la mayoría de los lenguajes de
programación.

Para asignar un dato a una variable, utilizaremos el operador de asignación =. Veamos un


sencillo ejemplo:
Es muy importante saber que la asignación produce una referencia al objeto que estamos
asignando. En el caso anterior, meses_inversion_TV tiene una referencia al número 8. Al ser un
escalar, nunca cambiará de valor, y no tendremos ningún problema con la asignación. No
obstante, en fastbooks posteriores veremos qué sucede si asignamos a una variable un objeto

mutable que cambie posteriormente su valor.

Lógicos

Los datos lógicos, binarios o booleanos (abreviado bool) son de los más
utilizados en programación. Pueden contener dos valores: verdadero o
falso, y para operar con ellos utilizaremos el álgebra de Boole (de ahí
viene su nombre).

Tenemos tres operadores, que ordenados por prioridad descendente son:

Operación Significado Ejemplo Resultado

not x not False True


El contrario de x:
si x es True,
devolverá False; y
viceversa.

Si x e y son True,
devolverá True;
x and y False and True False
de lo contrario,
False.

Si x o y son True,
devolverá True;
x or y False or True True
de lo contrario,
False.
Además, para operaciones con conjuntos o arrays (que veremos más adelante), tenemos
disponibles los operadores elemento a elemento (también llamados bitwise).

Operación Nombre Significado

Para cada elemento, el


contrario de x: si x es
~x Bitwise NOT
True, devolverá False; y
viceversa.

Para cada elemento, si x


e y son True, devolverá
x& y Bitwise AND
True; de lo contrario,
False.

x^y Bitwise XOR Para cada elemento, si x


o y (pero no ambos) son
True, devolverá True; de
lo contrario, False.

Para cada elemento, si x


o y son True, devolverá
x|y Bitwise OR
True; de lo contrario,
False.

Podemos utilizar otros operadores ajenos a la lógica booleana, y veremos cómo Python (al igual
que otros muchos lenguajes) realiza una conversión de tipos (también llamado coerción o
casting) de forma implícita, convirtiendo los valores True en 1, y los False en 0.
Números
Tenemos disponibles de forma nativa los siguientes tipos numéricos:

Enteros, o integer (abreviado como int).

Números de punto flotante, o float. Se corresponden con los números decimales.

Números complejos, o complex.

E incluso existen módulos para números racionales (módulo fractions) o decimales de alta
precisión (módulo decimal).

Normalmente, nos bastará con los dos primeros tipos (integers y floats), sobre los que podremos

aplicar las operaciones clásicas sobre números que vemos en la siguiente tabla.

Operación Significado Ejemplo Resultado

x+y Suma de x e y 2+2 4

x-y Resta de x e y 2-2 0

Multiplicación
x*y 2.5*2.5 6.25
de x e y

x/y División de x e y 8/5 1.6

División entera
x // y 8//5 1
de x e y

Remanente de
x%y 8%5 3
x/y

x ** y x elevado a y 2**3 8

Valor absoluto
abs(x) abs(-5) 5
de x

x convertido a
int(x) int(5.4) 5
entero

x convertido a
float(x) float(3) 3.0
punto flotante

En las operaciones numéricas también se pueden dar castings implícitos para evitar pérdidas de
datos. Por ejemplo, si dividimos un número entero entre otro que no sea divisor suyo, el
resultado no será un número entero, sino un float, como en el ejemplo de la imagen.
Secuencias

En Python tenemos tres tipos básicos de secuencias: lista (list),


tupla (tuple) y rango (range).

Profundizaremos en ellas en fastbooks posteriores, pero es importante introducir algunas

operaciones que se pueden hacer sobre ellas.

Operación Significado Ejemplo Resultado


El elemento x
x in s está en la 3 in [1,2,3] True
secuencia s

El elemento x no
x not in s está en la 5 not in [1,2,3] True
secuencia s

Concatenación
s+t de las secuencias ['a', 'b']+[ 'c'] ['a', 'b', 'c']
xyt

Concatenación n
s*n veces de la ['a', 'b']*2 ['a', 'b', 'a', 'b']
secuencia s

Selecciona el
elemento en la
s[i] (1,2,3,4,5,6)[0] 1
posición i de la
secuencia s

Slice de la
s[i:j] secuencia s: (1,2,3,4,5,6)[0:4] (1,2,3,4)
elementos de i a j

Slice de la
secuencia s: (1,2,3,4,5,6)
s[i:j:k] (1,3)
elementos de i a [0:4:2]
j, de k en k

Longitud de la
len(s) len([1,2,3]) 3
secuencia s

Mínimo de la
min(s) min((1,2,3)) 1
secuencia s

Máximo de la
max(s) max(['a', 'b', 'c']) 'c'
secuencia s
Detengámonos en las operaciones de selección y slice.

Las secuencias están numeradas con un índice entre 0 y N-1, donde N es la longitud de la
secuencia. Es decir, en Python (al igual que en C o Java) se empieza a ‘contar’ desde 0, ¡así

que tened cuidado si estáis acostumbrados a R!

Como veíamos en el cuadro anterior, podemos acceder al elemento i de una secuencia


introduciéndolo entre corchetes.

También podemos obtener un slice o corte de la secuencia indicando, además del primero, el
último elemento. En Python, el índice correspondiente al extremo final no se incluye en el
slice.
Como veis, se incluyen los índices del 0 al 3 sin incluir este último, es decir, 0, 1 y 2. En esas
tres primeras posiciones de la secuencia se encuentran las letras ‘a’, ‘b’ y ‘c’.

Si no incluimos valor final, por defecto se utilizará el tamaño de la secuencia, y este es el


motivo de no incluir el último valor: en nuestro ejemplo, la secuencia tiene cinco, y al
empezar en 0, no existe el índice 5 (sería el sexto elemento). Al no incluirse el extremo final,
evitamos ese problema.

Python permite usar índices negativos, que comienzan en el último elemento y continúan en
orden inverso. Observad que comienzan en -1, ya que el 0 se utiliza en el primer elemento.

Comprobémoslo en el ejemplo.
También podemos seleccionar el paso del slice. Anteriormente, cogíamos elementos de uno
en uno, pero podemos indicar un paso diferente.

En el ejemplo anterior, comenzamos en el índice 2 (el valor 3), hasta el índice 6 (el valor 7,
pero sin incluirlo), y saltando de dos en dos. Por tanto, obtenemos los valores 3 y 5.

Un uso muy frecuente del slicing es dar la vuelta a una secuencia, dejando en blanco los
valores inicial y final, y utilizando un paso de -1.
Texto

En Python tenemos disponibles las cadenas de caracteres, también


llamadas string (abreviado como str). Estas se pueden construir
mediante:

Comillas simples: 'soy un string de comillas simples'.

Comillas dobles: “ahora utilizo comillas dobles”.

Comillas triples (tanto simples como dobles): “““comillas triples dobles”””,


'''comillas triples'''. Estos strings pueden incluir saltos de línea (almacenados como
\n).

Da igual qué tipo de comillas usemos, ya que Python almacenará la información internamente de
la misma forma (y nos la mostrará por pantalla con comillas simples).
1 Selección e indexación

En Python no existe un tipo carácter individual o char (como por ejemplo en C), con lo que cada

elemento individual de un string es otro string (pero de longitud 1). Esto es, los strings son un
tipo particular de secuencias, por lo que podremos utilizar lo aprendido en el apartado anterior.

Veamos cómo acceder a elementos de un string. En primer lugar, definamos un string


básico.

Podremos acceder a elementos del string indicando un índice entre corchetes. ¡Recordad que
se empieza por el índice 0!

También podemos seleccionar de la misma forma fragmentos de un string:


Los strings son inmutables, es decir, no podemos modificar elementos o fragmentos.

2 Operaciones sobre textos

Concatenación

En primer lugar, veamos la operación más utilizada: la concatenación. Podemos concatenar


strings mediante el operador +.

También podemos utilizar f-strings (documentación completa en el PEP-498), que permiten


incluir expresiones dentro del propio string. Para incluir una expresión, la encerraremos
entre llaves. Veamos un ejemplo.
Métodos de los strings

Comentábamos en la introducción a Python que es un lenguaje orientado a objetos, vamos a

ver qué significa realmente esto. Los strings que hemos visto ahora son objetos, y además
del valor (“hola mundo” en el último ejemplo), tienen disponible una serie de métodos o
funciones que se pueden ejecutar sobre ellos mismos (ya hemos visto un par de ejemplos en
el apartado anterior).

Una forma sencilla de ver qué métodos tenemos disponibles es teclear la variable, después un
punto (para acceder a los métodos y atributos del objeto) y pulsar el tabulador. Veremos lo
siguiente:

A continuación podremos desplazarnos con el scroll para seleccionar el método que


queremos. Recordad que, si queréis consultar la documentación de una función, podéis
hacerlo usando un interrogante:
Veremos todos estos métodos en profundidad en fastbooks posteriores, pero a continuación
tenéis los más básicos (manejo de mayúsculas y minúsculas) para que os familiaricéis con el

uso de métodos sobre strings.

Método Significado

Devuelve una cadena donde todas las


upper
letras son mayúsculas

Devuelve una cadena donde todas las


lower
letras son minúsculas

Devuelve una cadena donde la


capitalize
primera letra es mayúscula

Devuelve una cadena donde la


title primera letra de cada palabra es

mayúscula

Por último, podemos convertir objetos compatibles en strings mediante la función str.
None

Para indicar la ausencia de valor, Python de ne el tipo none (NoneType),


cuyo único valor es None. De esta forma, si de nimos una variable con
este valor, indicamos que la variable existe, pero su valor es
desconocido.
Lección 7 de 9

Operaciones de comparación
Edix Educación

Un básico de cualquier lenguaje de programación son las operaciones de comparación entre


variables, que reciben dos objetos y devuelven un resultado binario. Python nos proporciona las
siguientes:

Operador Significado Ejemplo Resultado

< Menor que 3<5 True

Menor o igual
<= 7.8 <= 5 False
que

> Mayor que 'b' > 'a' True

Mayor o igual
>= True >= False True
que

== Igual que 'a' == 'b' False

!= Distinto que 'a' != 'b' True

is Identidad de True is None False


objeto

Identidad de
is not True is not None True
objeto negada
En los ejemplos de la tabla anterior hemos visto cómo hemos aplicado los operadores
indistintamente a bools, ints, floats y strings. Cada uno utiliza su propio orden: los números, el
orden implícito a ellos; los booleanos, el orden numérico resultante del casting a int; y los
strings, el orden lexicográfico (el mismo que se utiliza por ejemplo en un diccionario).

Ya vimos en el caso de los operadores lógicos not, or y and que existe una prioridad (también

llamado precedencia) entre ellos. La siguiente tabla muestra el orden de prioridad descendente
de todos los operadores que hemos visto a lo largo del fastbook.

Operadores Significados

() Expresiones entre paréntesis

Selección, slicing, atributos, llamadas


X[i], X[i:j], x.atributo, x(arg)
a funciones

~ Bitwise NOT

** Exponencial

Multiplicación, división, división


*, /, //, %
entera, módulo

& Bitwise AND

^ Bitwise XOR

| Bitwise OR

+, - Suma, resta

Operadores de comparación Ver tabla anterior

not Negación booleana

and Conjunción booleana

or Disyunción booleana

Los elementos que están en el mismo nivel de precedencia se aplicarán de izquierda a derecha.
No obstante, como veis en el primer nivel de prioridad, podéis utilizar paréntesis para clarificar
el orden.
Por último, aunque las operaciones de comparación que hemos visto son binarias, podemos
encadenar varias de ellas.

El operador is

Vamos a detenernos a explicar el funcionamiento del operador is. El uso principal que le
daremos es comprobar si un objeto es None, pero es interesante conocer qué comprueba
realmente este operador.

Para entender este operador, tenemos que volver al concepto de objeto en Python. Todos los
objetos de Python tienen una identidad, un tipo y un valor. Hasta ahora hemos visto muchos
ejemplos de tipos y valores, pero no de identidades.

La identidad de un objeto nunca cambia una vez que ha sido

creado, por lo que podríamos asemejarlo a la dirección física

del objeto en la memoria.


Precisamente, es el operador is el que comprueba las identidades de dos objetos, y la función

id permite consultar la identidad de un objeto.

En el caso de números o strings, como la asignación es una referencia, siempre tendrán el


mismo id.

Posteriormente veremos estructuras de datos más complejas en las que, aunque sus valores
sean iguales, el id (la dirección donde se almacenan) es distinto. Por tanto, una comparación
con == obtendrá un valor True, pero con is obtendremos False.
Lección 8 de 9

Conclusiones
Edix Educación

En este primer fastbook nos hemos introducido en el mundo de Python. Hemos comenzado por
entender las características del lenguaje, y qué ventajas nos puede proporcionar aprenderlo.

También hemos aprendido cómo manejarnos en Jupyter Notebook para poder crear nuestras
primeras líneas de código Python. Posteriormente hemos introducido los tipos más básicos que
ofrece el lenguaje, y algunas de las operaciones que podemos realizar con ellos.

En el próximo fastbook continuaremos viendo más tipos de datos, profundizaremos en las


funciones y veremos elementos de control de flujo como condicionales y bucles.

Antes de continuar, os recomiendo que repaséis lo que habéis aprendido hasta aquí. Cread un
notebook, y explorad por vuestra cuenta las operaciones entre tipos numéricos, los métodos
sobre strings o las comparaciones de variables.
Lección 9 de 9

Test nal
Edix Educación

Responde a las preguntas para comprobar lo que has aprendido.

Pregunta

01/07

¿Cuál de los siguientes es un entorno de desarrollo integrado o IDE?

Spyder.

Pandas.

Python.
Pregunta

02/07

¿Cuál de los siguientes es un comentario válido en Python?

//Esto es un comentario

@Esto es un comentario

#Esto es un comentario

Pregunta

03/07

¿Es posible realizar secuencialmente las siguientes instrucciones?

No, porque al definir la variable como numérica ya no puede tomar


un valor de texto.

Sí, ya que Python es un lenguaje de tipado dinámico.


Pregunta

04/07

¿Cuál de las siguientes opciones importa el módulo Pandas?

import(pandas)

import pandas

library(pandas)

Pregunta

05/07

¿Cuál es el resultado de 3**2?

9
Pregunta

06/07

¿Es posible realizar las siguientes instrucciones?

Sí, y el valor sería Cadena.

Sí, y el valor sería cCdena.

No.

Pregunta

07/07

¿Cuál es el resultado de la siguiente expresión?

True, porque 2*3/5 es mayor que 0 (el casting a float de True and
False).

False, porque >= tiene más prioridad que and, y True and False es
False.
Respuestas: 1-A, 2-C, 3-B, 4-B, 5-C, 6-C, 7-B
Creamos Digital Workers

También podría gustarte