circle-info
Desarrollo en curso, en breve se publicarán el resto de temas.

Capítulo 2: Variables, constantes y tipos

En programación, las variables son los contenedores fundamentales que almacenan la información con la que trabaja un programa. Si la memoria del ordenador fuera una inmensa biblioteca, las variables serían como las etiquetas en las estanterías que nos indican dónde encontrar cada libro (dato). Sin ellas, sería imposible realizar cualquier cálculo o manipular información. Este capítulo explora cómo nombrar y utilizar correctamente estas "etiquetas", así como los diferentes tipos de datos que pueden referenciar, y las reglas que gobiernan su uso en Python.

2.1. Identificadores: Reglas y buenas prácticas

Un identificador es el nombre que damos a una variable, función, clase u otro objeto en Python. Es la "etiqueta" que asociamos a un valor en memoria.

Para nombrar identificadores, se deben seguir unas reglas obligatorias:

  1. Carácter inicial: Debe comenzar con una letra (a-z, A-Z) o un guion bajo (_). Nunca puede empezar con un número.

    • Válido: nombre, _contador, Usuario1

    • Inválido: 1usuario, -precio, @email

  2. Caracteres posteriores: Después del primer carácter, puede contener letras, números y guiones bajos.

    • Válido: nombre_completo, temperatura_2024

    • Inválido: precio-final (el guion medio no está permitido)

  3. Sensibilidad a mayúsculas: Python distingue entre mayúsculas y minúsculas. nombre, Nombre y NOMBRE son tres variables diferentes.

  4. Palabras reservadas: No se pueden usar como identificadores las palabras clave del lenguaje (ej. if, for, while, class).

Además de las reglas, la guía de estilo PEP 8 establece convenciones para que el código sea más legible y consistente:

Tipo
Convención
Ejemplo

Variables y funciones

snake_case (minúsculas con guiones bajos)

edad_usuario, calcular_promedio()

Constantes

UPPER_CASE (mayúsculas con guiones bajos)

PI, MAX_INTENTOS

Clases

PascalCase (cada palabra empieza con mayúscula)

Usuario, CalculadoraMatematica

Ejemplos de buenas prácticas


2.2. Tipado fuerte y dinámico en Python

El sistema de tipos de Python se define por dos conceptos clave: es de tipado dinámico y fuerte.

Tipado dinámico

Significa que no es necesario declarar el tipo de una variable al crearla. El tipo se determina en tiempo de ejecución, cuando se le asigna un valor. Además, una misma variable puede cambiar de tipo durante la ejecución del programa. Esto contrasta con lenguajes de tipado estático como Java o C++, donde el tipo de una variable se fija en su declaración y no puede cambiar.

Comparación con tipado estático (Java)

Tipado fuerte

Significa que Python no permite operaciones implícitas entre tipos de datos incompatibles. Por ejemplo, intentar sumar un número y una cadena de texto provocará un error TypeError. Para que la operación funcione, es necesario realizar una conversión explícita: 5 + int("10"). Esto previene errores comunes en lenguajes de tipado débil como JavaScript, que intentaría "adivinar" la intención del programador, a menudo con resultados inesperados.

Python no permite operaciones implícitas entre tipos incompatibles

Comparación con tipado débil (JavaScript)

Verificación de tipos

Para verificar el tipo de una variable, se pueden usar dos funciones:

  • type(): Devuelve el tipo exacto de un objeto.

  • isinstance(): Comprueba si un objeto es una instancia de una clase o de una tupla de clases. Generalmente es más flexible y recomendada, ya que también funciona correctamente con la herencia.


2.3. Tipos de datos básicos y colecciones

Python ofrece un rico conjunto de tipos de datos integrados.

Enteros (int)

Números sin decimales. Pueden ser positivos, negativos o cero, y su tamaño solo está limitado por la memoria disponible. Se pueden representar en diferentes bases y usar guiones bajos para mejorar la legibilidad.

Punto flotante (float)

Números con decimales. Tienen una precisión limitada, lo que puede llevar a pequeños errores de redondeo. Se puede usar notación científica.

Booleanos (bool)

Representan valores de verdad. Solo pueden ser True o False. Ciertos valores, conocidos como "falsy", se evalúan como False en un contexto booleano.

Cadenas de texto (str)

Secuencias de caracteres. Son inmutables, lo que significa que no se pueden modificar una vez creadas. Esta inmutabilidad garantiza que el objeto no pueda ser modificado accidentalmente, haciéndolo seguro para usar como clave de diccionario o en entornos complejos como la programación multihilo.

Tipo None

El tipo None representa la ausencia de valor. Es similar al null de otros lenguajes y se utiliza a menudo para indicar que una variable no tiene un valor asignado o que una función no devuelve nada explícitamente.

Colecciones

Listas (list)

Colecciones ordenadas y mutables de elementos. Pueden contener datos de diferentes tipos.

Tuplas (tuple)

Colecciones ordenadas e inmutables. Una vez creadas, no se pueden modificar. Son más eficientes en memoria que las listas y, gracias a su inmutabilidad, pueden usarse como claves de diccionario.

Rangos (range)

Secuencias numéricas inmutables y eficientes en memoria, ya que no almacenan todos los números a la vez, sino que los generan bajo demanda.

Diccionarios (dict)

Colecciones mutables de pares clave-valor, ordenadas por inserción desde Python 3.7+. Las claves deben ser únicas e inmutables.

Conjuntos (set)

Colecciones mutables y no ordenadas de elementos únicos. Son útiles para eliminar duplicados y realizar operaciones matemáticas de conjuntos (unión, intersección, etc.).


2.4. Constantes y su uso en Python

Como se mencionó anteriormente, Python no tiene un mecanismo para crear constantes verdaderas. La convención establecida por PEP 8 es utilizar nombres de variables completamente en mayúsculas (UPPER_CASE) para indicar que un valor no debe ser modificado.

Técnicamente, es posible reasignar estas variables, pero hacerlo se considera una mala práctica.

Organización de constantes

En módulos separados

En clases

Variables locales y globales

El ámbito de una variable determina dónde es accesible.

  • Variables locales: Se definen dentro de una función y solo son accesibles desde ella.

  • Variables globales: Se definen en el nivel principal del script y son accesibles desde cualquier parte. Para modificar una variable global desde dentro de una función, se debe usar la palabra clave global.


Resumen del Capítulo

En este capítulo has aprendido los fundamentos del sistema de variables y tipos de Python. Has comprendido las reglas de nomenclatura, el tipado dinámico pero fuerte, y los tipos de datos básicos que forman la base de cualquier programa Python. La correcta utilización de variables, constantes y tipos es fundamental para escribir código limpio, eficiente y mantenible.

💡 Conceptos Clave:

  • Identificadores: Nombres que siguen reglas estrictas y convenciones PEP 8

  • Tipado dinámico y fuerte: Flexibilidad con seguridad

  • Tipos primitivos: int, float, bool, str, None

  • Colecciones: list, tuple, range, dict, set

  • Constantes: Convención con MAYÚSCULAS, no inmutabilidad real

  • Ámbito: Variables locales y. globales

🤔 Preguntas de Reflexión:

  1. ¿Qué ventajas y desventajas tiene el tipado dinámico de Python frente al tipado estático?

  2. ¿Por qué Python eligió la inmutabilidad para strings y tuplas pero no para listas?

  3. ¿En qué situaciones preferirías usar un diccionario frente a una lista?

  4. ¿Cómo puede la correcta nomenclatura de variables mejorar la legibilidad del código?

🔧 Ejercicio Práctico:

Crea un programa que:

  1. Defina constantes para una tienda (IVA, descuento máximo, etc.)

  2. Use diferentes tipos de datos para representar un producto

  3. Implemente funciones que calculen precios finales

  4. Demuestre el correcto uso de variables locales y globales

Ahora que conocemos los diferentes tipos de datos que podemos almacenar, estamos listos para aprender a operar con ellos. El siguiente capítulo explora las expresiones y los operadores, las herramientas que nos permiten construir la lógica de nuestros programas.


Última actualización

¿Te fue útil?