Otro par de objetos dentro de Python, que seguro te serán de mucha utilidad son: Los Diccionarios y Las Funciones, el primero es otro tipo de objeto para almacenar listas de información, con estructuras o características diferentes a las Listas, Tuplas y Conjuntos, que van a facilitar el manejo de datos. Mientras que el segundo es un tipo de objeto que será muy útil al momento de querer usar el mismo código muchas veces dentro de una estructura de instrucciones.
Tabla de Contenido
Diccionarios
Son un tipo de listas cuya principal característica es que se forman por la combinación de un key o llave y un value o valor.
A diferencia de las listas, los elementos de los diccionarios no están ordenados, sin embargo es posible acceder a ellos directamente por su llave sin importar la posición en la que se encuentren almacenados dentro del listado.
Por lo tanto no hay un elemento [0] como suele ocurrir en una Lista de acuerdo a lo que ya vimos, pero de alguna forma siempre abra una pareja de llave-valor ocupando dicha posición.
Para poder crear un diccionario este debe ser indicado por {} y dentro separado por : y entre comilla simple ” la llave:valor, mira debajo la estructura.
Sintaxis
variable = {‘llave1′:’valor1′,’llave2′:’valor2′,’llaveN’:’valorN’}
Mira debajo el siguiente ejemplo:
print(“Diccionarios”) # Diccionarios
colores = {‘amarillo’:’yellow’,’azul’:’blue’,’verde’:’green’}
print(colores) # {‘amarillo’: ‘yellow’, ‘azul’: ‘blue’, ‘verde’: ‘green’}
Veamos ahora algunos de los métodos mas usados en el manejo de los diccionarios:
Recordemos primero cual es nuestro diccionario que hemos creado
{‘amarillo’: ‘yellow’, ‘azul’: ‘blue’, ‘verde’: ‘green’}
El método get permite recuperar el valor de una llave en especifico, siempre y cuando esta existe, de manera opcional podemos indicarle que en caso de que no exista devuelva una cadena si es que así lo deseamos, miremos los siguientes dos ejemplos:
#metodo get
print(colores.get(‘amarillo’)) # yellow
print(colores.get(‘negro’,’no aparece’)) #no aparece
Para este segundo caso, la leyenda de ‘no aparece’ fue preconfigurada en el método get por si esta efectivamente no fuera parte del diccionario.
Ahora el método keys(), devuelve todas llaves que se contengan dentro del diccionario.
#metodo keys
keys = colores.keys()
print(keys) # dict_keys([‘amarillo’, ‘azul’, ‘verde’])
Por otro lado si lo que queremos es recuperar todos los valores para ello se puede usar el método values()
#metodo values
values = colores.values()
print(values) # dict_values([‘yellow’, ‘blue’, ‘green’])
Hay ocasiones en las que se requiere conocer todo el contenido del diccionario, tanto las llaves como los calores y para eso existe el método items()
#metodo items
items = colores.items()
print(items) # dict_items([(‘amarillo’, ‘yellow’), (‘azul’, ‘blue’), (‘verde’, ‘green’)])
El siguiente metodo pop, permite devolver un elemento en especifico y después borrarlo del diccionario en el mismo paso.
#metodo pop
#devuelve un elemento y lo borra del diccionario
print(colores.pop(‘amarillo’)) # yellow
print(colores.pop(‘negro’, ‘No se enceuntra’)) #No se enceuntra
print(colores) # {‘azul’: ‘blue’, ‘verde’: ‘green’}
Ahora veamos el método clear(), que sencillamente lo que hace es limpiar de todo contendio el diccionario.
#metodo clear
#Se puede hacer el borrado de todo el diccionario
colores.clear()
print(colores) # {}
Funciones
¿Qué es una función?
Una función es un conjunto de líneas de código que realiza una tarea especifica y puede retornar un valor.
En otras palabras es como un mini programa dentro de un programa.
Python por su parte incorpora una serie de funciones como PRINT(), INPUT() o LEN(), entre otras, pero también es posible escribir nuestras propias funciones.
Una función en Python esta definida por la siguiente sintaxis
def nombreFuncion():
instruccion1
instruccion2
instruccion3
NOTA: En Python es importante conservar un correcto control de la indentación, que será la que determine el contenido de la función.
Indentación: Este término significa mover un bloque de texto hacia la derecha insertando espacios o tabuladores, para así separarlo del margen izquierdo y distinguirlo mejor del texto adyacente; en el ámbito de la imprenta, este concepto siempre se ha denominado sangrado o sangría.
Veamos un ejemplo de declaración y llamado a una función:
#sintaxis de ejemplo 1
def Hola():
print(“hola!”)
print(“Hola!!!”)
print(“Que tal!”)
#llamado a la función
Hola() # hola!
# Hola!!!
# Que tal!
#sintaxis de ejemplo 2
def test():
n=10
print(“test n : “, n)
#llamado a la función
test() # test n : 10
En código, una llamada a la función es solo el nombre de la función seguido de paréntesis, posiblemente con cierto número de argumentos entre paréntesis.
Cuando la ejecución del programa llega a la llamada de la función, saltará a la línea superior en la función y comenzará a ejecutar el código allí.
Cuando llega al final de la función, la ejecución vuelve a la línea que llamó a la función y continúa moviéndose a través del código como antes.
Importante:
Es muy importante tener claro que si se declara una variable dentro de una función esta no estará disponible para el resto del código en general, es decir que se volverá exclusiva del conjunto de líneas de código que le acompañen dentro de la función.
Ahora ya se ha mencionado dentro de este mismo apartado que es posible enviar parámetros a la función y recibirlos de regreso una vez que se concluya la ejecución de la misma, pero ¿Cómo se hace eso?
Bueno miremos los siguientes ejemplos:
#funcion con el parametro name
def nombre(name):
print(“hola ” + name)
nombre(‘Memo’) #hola Memo
La definición de la función hola() en este programa tiene un parámetro llamado name.
Un parámetro es una variable en la que se almacena un argumento cuando una función es llamada o invocada.
La ejecución del programa ingresa a la función, y el nombre de la variable se establece automáticamente en ‘Memo’, que es lo que imprime la declaración print().
#funcion que devuelve el texto ‘este es un ejemplo’
def regreso():
return “Este es un ejemplo”
print(regreso()) # Este es un ejemplo
Para regresar un valor, las funciones pueden optar por usar la instrucción return.
NOTA: Al momento de usarla, la función se detiene.
Muchos lenguajes de programación no lo permiten pero en Python es posible hacer un regreso de múltiples valores de distintos objetos solo separados por una coma, veamos un ejemplo:
#Multiples formas de recuperar un RETURN multiple
def regresoMultiple():
return “Una cadena”, 20, [1,2,3]
print(regresoMultiple()) # (‘Una cadena’, 20, [1, 2, 3])
cadena, numero, lista = regresoMultiple()
print(cadena) # Una cadena
print(numero) # 20
print(lista) # [1, 2, 3]
numero = regresoMultiple()[1]
print(numero) # 20
doValores = regresoMultiple()[1:]
print(doValores) # (20, [1, 2, 3])
Otra de las formas en las que se puede declarar una función y sus argumentos, es definiendo valores por defecto a los mismos, miremos un ejemplo:
#Definición de variables con valores por defecto
def restaValDef(a=None, b=None):
if a==None or b== None:
print(“Error: Debes enviar dos numeros a la funcion”)
return
return a-b
print(restaValDef(3, 2)) # 1
print(restaValDef(3)) # Error: Debes enviar dos numeros a la funcion
print(restaValDef(2)) # Error: Debes enviar dos numeros a la funcion
resta = restaValDef(b=10,a=30)
print(resta) # 20
Otra muy util forma de pasar argumentos a una función es cuando no conocemos especificamente que tipo de dato estaremos recibiendo o estamos abiertos a la posibilidad de recibir cualquier tipo, para eso se puede usar esta forma de recibir argumentos indeterminados, veamos un ejemplo:
#Función con argumentos indeterminados
def indeterminados(*args):
print(“args: “, args)
for arg in args:
print(“argumento arg “, arg)
indeterminados(20, “hola”, ‘que onda’, [1,2,3], {3,4,5})
# args: (20, ‘hola’, ‘que onda’, [1, 2, 3], {3, 4, 5})
# argumento arg 20
# argumento arg hola
# argumento arg que onda
# argumento arg [1, 2, 3]
# argumento arg {3, 4, 5}
Como siempre comparto esto con la mejor de las intenciones para que pueda ser de utilidad a alguna persona, por favor si tienes algo mas que consideres importante compartir, no dejes de hacerlo, por lo pronto es todo, pero pronto traeré algo mas, sobre este y otros temas.