Capítulo #5 - Normas y convenciones de nombres de variable
Contenido del capítulo
Antes de empezar a programar, necesitas leer este
capítulo. Se trata de un capítulo dedicado a las normas
y convenciones para los nombres de variable, no todas,
ya que hay muchas en Python, pero sí algunas de las más
importantes.
Duración estimada de todo el contenido:
Duración del vídeo:
Contiene 3
ejercicios de Python para resolver.
Contiene 1
vídeo.
Tabla de
contenidos
Introducción al código limpio en programación
Normas y convenciones de variables
En muchas ocasiones verás que se denomina a las normas
de nombres, como “normas de nomenclatura”.
Normas de nombres se dice en inglés
naming rules.
Empezando con este tema, tenemos que tener en cuenta que
aparte de reglas obligatorias, contamos con una serie de
convenciones. Estas convenciones son buenas prácticas que
deberás seguir. Con ellas te adaptarás al estilo de código
de la comunidad Python.
Espacio publicitario
Para que nos entendamos bien.
Si hablo de regla, estoy hablando de una norma
obligatoria. Si no la cumples tendrás errores en tus
programas Python.
En cambio,
cuando hable de convenciones, me estaré refiriendo a
esas buenas prácticas que todos deberíamos seguir para
hacer un código limpio, y muy fácil de leer por las
personas.
Convenciones se dice en inglés
conventions.
Reglas en los nombres de variables
Empecemos por las reglas obligatorias sobre los nombres de
variables en Python.
Sensible a mayúsculas y minúsculas
Python es un lenguaje sensible a mayúsculas y minúsculas.
Esto quiere decir, que deberás escribir los nombres de los
elementos respetándolas.
Aquí tienes tres variables que el intérprete de Python
considerará como diferentes:
nombre_variable
NOMBRE_VARIABLE
Nombre_Variable
Hay lenguajes de programación donde no importan las
mayúsculas y minúsculas.
Para nombrar a las variables, utiliza únicamente letras,
números y el carácter guion bajo (_), ya que
los nombres de estas solo pueden estar formados por estos
caracteres.
Los siguientes ejemplos son nombres de variables válidos
en Python:
numero1
fecha_actual
resultado
En cambio, estos tres ejemplos, son incorrectos:
1numero
$resultado
nombre-usuario
Quizás te extrañe que sea incorrecto el primer nombre de
variable, del último ejemplo (1numero).
Puesto que he dicho que se admiten nombres con números y
letras. Esto es debido a una norma más, la cual viene a
continuación.
Empezar por un número
Los nombres de variables en Python, no pueden empezar por
un valor numérico. A partir del segundo carácter del
nombre, puedes poner los que quieras, pero el primero,
debe ser sí o sí, un guion bajo o una letra.
Aquí tienes un par de ejemplos más de nombres correctos a
nivel de regla:
_n0c3e
a1_b2_c3
Y digo “correctos a nivel de regla”, porque son nombres
poco correctos para llevar unas buenas prácticas, ya que
no representan un nombre descriptivo con su cometido.
¿Se te ocurre qué dato guardar en una variable como
a1_b2_c3?
Guion bajo (_), en inglés se dice
underscore.
Espacio publicitario
Palabras reservadas en los nombres
El término “palabra reservada”, viene del cometido de
estas palabras.
Tales palabras hacen funcionar partes muy importantes del
lenguaje de programación, de modo que se reservan para que
no las puedas utilizar en tus propios elementos del
código. Acción que crearía múltiples problemas.
Recuerda que tienes las palabras reservadas en el capítulo
anterior. Si ves que en algún momento tienes algún error,
fíjate en que no hayas puesto una de esas palabras, por
ejemplo, como nombre de variable.
Convenciones en los nombres de las variables
Pasemos a ver diferentes convenciones que tiene Python a
la hora de crear nombres para las variables.
Tal y como he indicado al principio de este capítulo,
las convenciones son buenas prácticas que deberás
utilizar, aunque no sean estrictamente obligatorias.
Utiliza nombres de variables descriptivos
Una de las cosas más importantes a la hora de escribir
código limpio, es escribir nombres de variables
descriptivos con los valores que van a almacenar.
Por ejemplo, mira el poco sentido que tienen las
siguientes variables:
fecha = "Hola"
nombre = 7
a = 10034.5657
Estas variables no van a dar error, pero constituyen una
mala práctica, ya que en un futuro, cuando leas de nuevo
tu programa, para modificar algo, o lo hagan otras
personas, va a ser un completo caos.
Imagínate entender la lógica de quizás un centenar, o
varios millares de variables, en un programa con nombres
de este tipo.
¿No te parece mejor así?
saludo = "Hola"
numero = 7
numero_preciso = 7.5657
Puedes ver que la variable saludo contiene un
valor con un saludo, que la variable
numero lleva un valor numérico y que
numero_preciso, tiene un número con
decimales, el cual da cierta precisión decimal. Son
nombres que se correlacionan con su contenido almacenado.
Si que es cierto que en algunos ejemplos del curso,
utilizaré variables con nombres simples como
a, b, c, etc., con
el fin de simplificar las explicaciones. En ejemplos
pequeños de código, ayudan a ver mejor el flujo de la
lógica y a comprender los conceptos básicos. Pero recuerda
siempre que, en proyectos más grandes y aplicaciones
reales, es importante utilizar nombres de variables más
descriptivos para que el código sea fácil de leer por las
personas.
Por ejemplo, cuando te explique de qué forma funciona una
sencilla función de suma, podría hacerlo con variables
como a y b, con el fin de
simplificar el código y las explicaciones.
Por ejemplo:
def sumar(a, b):
return a + b
La frase que te podría dar para explicarte esta función,
sería algo como “La función sumar() devuelve
el resultado de la suma entre los valores de
a y b.”
La especificación de nombres en cada programa que hagas en
el futuro, quedará de tu parte. Con la experiencia
adquirida, cada día lo harás mejor y te saldrá con más
facilidad, sin detenerte demasiado a pensar nombres de
variables.
Espacio publicitario
Nombres en minúsculas
Por convención, los nombres de las variables deberán
escribirse completamente en minúsculas, sin excepción.
Nombres compuestos y el guion bajo
Otra convención muy característica de Python, es la de
separar los nombres compuestos de las variables con la
convención snake_case, que se basa en que cada
palabra de un nombre de variable (que tiene más de una),
debe ser separado con un guion bajo.
El nombre snake_case proviene de la forma en que
quedan los nombres, como el zigzagueo de una serpiente.
Algo que encaja genial con el nombre Python.
El término
snake case no tiene
una traducción exacta al español, personalmente lo
traduzco como escritura de serpiente. Algo que
suena un poco raro, pero realmente, describe lo que es.
El nombre Python se
traduce al español como pitón. Este lenguaje de
programación, desde hace mucho tiempo se ha identificado
con su logo de dos serpientes de Pitón. Aunque
inicialmente se le dio el nombre por el grupo de comedia
Monty Python. El logo con las serpientes, llegaría más
tarde.
No escribas los nombres en mayúsculas
He explicado que los nombres de variable deben ir por
convención en minúsculas. Sin embargo, tenemos otro tipo
de “variables”, que se deben escribir completamente en
mayúsculas. Se trata de las constantes.
Las constantes de Python, en realidad son solo variables
con el nombre escrito en mayúsculas, es un tema que
explicaré en otro capítulo.
PI = 3.14159 # Constante
numero = 10 # Variable
La forma de distinguir un tipo de contenedor del otro, es
siguiendo las convenciones de nombres.
Espacio publicitario
No escribas acentos u otros caracteres especiales
Algo que no deberías hacer, es poner acentos, diéresis u
otros símbolos, en los nombres de variable.
A nivel de sintaxis, van a funcionar, pero no se
recomienda por problemas de compatibilidad sobre
diferentes sistemas, problemas en cuanto a trabajo en
equipo internacional, etc.
Imagina que algún desarrollador, te envía código como el
de siguiente imagen:
En Python funciona, pero no es legible para ti (si no
conoces este idioma).
Por otro lado, tendrás que ir copiando y pegando los
nombres de variable, si no tienes a mano todos esos
símbolos.
Imagina esto mismo, pero con un programa complejo. Se
puede volver algo tedioso.
Entonces, en Python se recomienda escribir siempre en
inglés, seas de donde seas, y tengas el idioma materno que
tengas. Por eso, he decidido incluir un montón de notas de
traducción, para que te vayas acostumbrando.
Si no sabes todavía nada, o casi nada de inglés, no te
preocupes, empieza con los nombres en español, sin
utilizar acentos u otros caracteres especiales como la
letra ñ, y con el tiempo, ya aprenderás a escribir código
completamente en inglés.
También se recomienda dejar de usar acentos en los
comentarios, pero esto ya no afecta de la misma forma, ya
que los comentarios, son ignorados por el intérprete, no
los tendrá que usar para escribir código otra persona,
aunque sí para entenderlo. Entonces, insisto en utilizar
el idioma inglés cuando sepas lo suficiente.
En este curso, no voy a dar por hecho que sepas inglés, de
modo, que todos los ejemplos serán en español, sin
símbolos en el propio código, pero con acentos en los
comentarios.
Espacio publicitario
Espacio publicitario
Ejercicios de Python para resolver
8. ¿Cuáles de estos nombres de variable son correctos en
cuanto a reglas? Es decir, que el programa no ejecutaría
con dichos nombres (errores de sintaxis). También, piensa
si son correctas las convenciones usadas.
Apellidos
nombre_cliente
multiplicación
a_70
b-80
fecha Nacimiento
$dinero$
1er_apellido
Nombre correcto en cuanto a sintaxis. No respeta las
convenciones de Python, ya que tiene la letra A
mayúscula.
Nombre correcto en cuanto a sintaxis y convenciones.
Nombre correcto en cuanto a sintaxis. No respeta las
convenciones de Python, por el hecho de que tiene un
acento en la letra ó.
Nombre correcto en cuanto a sintaxis. No respeta las
convenciones de Python, al tener un nombre poco, o
nada descriptivo.
Nombre incorrecto en cuanto a sintaxis. Tiene un
guion. Símbolo no permitido en nombres de variables.
Hablando de convenciones, también es un nombre poco,
o nada descriptivo.
Nombre incorrecto en cuanto a sintaxis. Utiliza un
espacio para separar las palabras. Este carácter no
está permitido en nombres de variable. Por
convenciones, también incumple por tener una letra N
mayúscula.
Nombre incorrecto en cuanto a sintaxis. Caracter
$
no válido para nombres de variable.
Nombre incorrecto en cuanto a sintaxis. Empieza por
un número. Por lo demás, en cuanto a convenciones,
sería correcto. Se podría corregir así:
primer_apellido.
9. Los siguientes ejemplos, no tienen errores de sintaxis.
Sin embargo, ¿cuáles no cumplirían las convenciones para
un código legible de Python? ¿Sabrías indicar por qué en
cada caso?
Nombre
EdadUsuario
edad_usuario
división
apellidos
cumpleaños
a64b
nombre_completo
No cumple las convenciones de Python. El formato
está en PascalCase (otra convención
diferente, que no utiliza Python para los nombres de
las variables). Corrección:nombre.
No cumple las convenciones de Python. El formato
está en PascalCase, no en
snake_case. Corrección:edad_usuario.
Cumple las convenciones de Python. Está con letras
minúsculas y con guion bajo como separador de
palabras. Además, se trata de un nombre descriptivo.
No cumple las convenciones de Python. No debes poner
acentos en los nombres de las variables.
Corrección:division.
Cumple las convenciones de Python. Todo son letras
en minúsculas y el nombre es descriptivo.
No cumple las convenciones de Python. No debes poner
caracteres especiales como la ñ. Corrección:birthday. Si lo pongo en español,
quedaría un tanto raro: cumpleanos;
aunque ponlo como quieras.
No cumple las convenciones de Python. Es un nombre
para nada descriptivo. La corrección será relativa
al contenido que lleve la variable, ya que por el
nombre no se sabe qué podría ser.
Cumple las convenciones de Python. Está con letras
minúsculas, y con guion bajo como separador de
palabras. Además, se trata de un nombre descriptivo.
10. ¿Cuál es el tipo de error que nos dará el intérprete
de Python si utilizamos una palabra reservada del lenguaje
como nombre de variable?
Por ejemplo, esto:
class = 10
La respuesta es un error de sintaxis:
class = 10
Error en la
consola
SyntaxError: invalid syntaxError de sintaxis: sintaxis inválida.
En este caso, estoy utilizando
class como nombre de variable. Esto es
incorrecto, ya que es una palabra reservada del
lenguaje.