Modulo #4 de python
Modulo #4 de python
Fundamentos de Python 1
Módulo 4
Funciones, Tuplas, Diccionarios, Exceptiones y Procesamiento de
Datos
En este módulo, se cubrirán los siguientes temas:
Estructuración de código y el concepto de función.
Invocación de funciones y devolución de resultados de una
función.
Alcance de nombres y sombreado de variables.
Tuplas y su propósito: construcción y uso de tuplas.
Diccionarios y su propósito: construcción y uso de diccionarios;
Introducción a las excepciones en Python.
Las funciones son herramientas utilizados para hacer la vida más fácil
y simplifier tareas tediosas y repetitivas. Se utilizan como print(),
input(), y métodos, pero también son funciones declarados
específicamente. Es importante escribir tus funciones y como
utilizarlas, ya que es importante tener concentración y atención. Es
importante evitar errores en el código copiado y en el programa. La
primer condición para escribir funciones propias es si un fragmento
de código aparece en más de una ocasión. Un buen desarrollador
divide el código en piezas aisladas y codifica cada una en función, lo
que simplifica el trabajo del programa. Descomposición es un proceso
comúnmente llamado descomposición.
Un programa grande y complejo suele necesitar el trabajo de un
equipo de desarrolladores, ya que un solo desarrollador no podría
abarcarlo todo. Para asegurar eficiencia y cooperación, el trabajo
debe dividirse claramente entre los miembros del equipo. Cada
desarrollador debe encargarse de un conjunto específico de
funciones, que se combinan en módulos para crear el producto final.
Consideraciones importantes:
Ejemplo incorrecto:
```python
print("Se comienza aquí.")
message()
print("Se termina aquí.")
def message():
print("Ingresa un valor: ")
```
Error: `NameError: name 'message' is not defined`.
Ejemplo incorrecto:
```python
def message():
print("Ingresa un valor: ")
message = 1
def message():
print("Ingresa un valor: ")
message()
print("Se termina aquí.")
python
def message():
print("Ingresa un valor: ")
message()
a = int(input())
message()
b = int(input())
message()
c = int(input())
**Práctica:**
- Se sugiere practicar estos conceptos en un entorno de codificación.
def hi():
print("¡Hola!")
o Resultado: Error NameError porque la función no está
definida antes de su invocación.
3. ¿Qué ocurre al ejecutar el siguiente código?
python
Copiar código
def hi():
print("hola")
o Resultado: Error TypeError porque la función hi() no está
definida para aceptar argumentos.
Las funciones parametrizadas permiten aceptar datos en su invocación,
haciendo su comportamiento más flexible y adaptable.
Características de los Parámetros:
1. Existencia Limitada:
o Los parámetros solo existen dentro de las funciones donde
fueron definidos.
o Se definen entre los paréntesis después del nombre de la
función usando def.
2. Asignación de Valores:
o Los valores se asignan a los parámetros cuando se invoca la
función con los argumentos correspondientes.
Diferencias entre Parámetros y Argumentos:
Parámetros: Variables dentro de la función.
Argumentos: Valores que se pasan a los parámetros desde fuera
de la función.
Enriquecimiento de una Función con Parámetros:
Agregar un parámetro para mostrar al usuario un número:
"def message(number):"
"print("Ingresa un número:", number)"
Importante:
Un parámetro debe recibir un valor desde el entorno de la función
en el momento de su invocación.
El número de argumentos debe coincidir con el número de
parámetros definidos; de lo contrario, se producirá un error.
Cuando una función parametrizada no recibe el argumento esperado,
se genera un error. Aquí tienes un ejemplo y cómo corregirlo:
Ejemplo con Error:
def message(number): print("Ingresa un número:", number)
message()
Error generado:
TypeError: message() missing 1 required positional argument:
'number'
Código Corregido:
def message(number): print("Ingresa un número:", number)
message(1)
Salida:
Ingresa un número: 1
En este ejemplo, el valor del argumento (1) se pasa a la función,
asignando un valor inicial al parámetro number.
Sombreado de Variables:
Es posible tener una variable con el mismo nombre que el parámetro
de una función. Esto se denomina sombreado.
Ejemplo de Sombreado:
def message(number): print("Ingresa un número:", number)
number = 1234 message(1) print(number)
Explicación del Sombreado:
El parámetro number dentro de la función sombrea cualquier
variable externa con el mismo nombre.
Fuera de la función, number se refiere a la variable externa.
Dentro de la función, number se refiere al parámetro de la función.
En el ejemplo, number dentro de la función y number fuera de la
función son entidades diferentes.
Paso de Parámetros Posicionales en Python
La técnica que asigna cada argumento al parámetro correspondiente
se llama paso de parámetros posicionales, y los argumentos pasados
de esta manera son conocidos como argumentos posicionales.
Ejemplo:
def my_function(a, b, c): print(a, b, c)
my_function(1, 2, 3)
El paso de parámetros posicionales se usa de manera intuitiva en
muchas situaciones, como al presentarnos mencionando primero
nuestro nombre y luego nuestro apellido.
Ejemplo de presentación en Python:
def introduction(first_name, last_name): print("Hola, mi nombre es",
first_name, last_name)
introduction("Luke", "Skywalker") introduction("Jesse", "Quick")
introduction("Clark", "Kent")
Salida esperada:
Hola, mi nombre es Luke Skywalker
Hola, mi nombre es Jesse Quick
Hola, mi nombre es Clark Kent
Ejemplo adaptado a la costumbre húngara (apellido antes del
nombre):
def introduction(first_name, last_name): print("Hola, mi nombre es",
first_name, last_name)
introduction("Skywalker", "Luke") introduction("Quick", "Jesse")
introduction("Kent", "Clark")
Salida esperada:
Hola, mi nombre es Skywalker Luke
Hola, mi nombre es Quick Jesse
Hola, mi nombre es Kent Clark
Prueba ejecutar los códigos y verifica las salidas esperadas. Puedes
intentar construir más funciones utilizando el paso de parámetros
posicionales para entender mejor cómo funciona.
Paso de Argumentos con Palabra Clave en Python
Python permite pasar argumentos donde el significado del argumento
está definido por su nombre, no por su posición. Esto se llama paso de
argumentos con palabra clave.
Ejemplo:
def introduction(first_name, last_name): print("Hola, mi nombre es",
first_name, last_name)
introduction(first_name = "James", last_name = "Bond")
introduction(last_name = "Skywalker", first_name = "Luke")
En este ejemplo, los valores pasados a los parámetros están precedidos
por el nombre del parámetro seguido del signo =.
La posición no es relevante aquí, cada argumento conoce su destino
basado en el nombre utilizado.
Salida esperada:
Hola, mi nombre es James Bond
Hola, mi nombre es Luke Skywalker
Es importante no usar el nombre de un parámetro que no existe, ya que
eso generará un error.
Funciones Parametrizadas: Valores Predeterminados
En Python, puedes asignar valores predeterminados a los parámetros de
una función. Estos valores se usan si el argumento correspondiente no
se proporciona al invocar la función. El valor predeterminado se utiliza
solo cuando no se especifica un valor para ese parámetro en la llamada
a la función. Si se proporciona un valor, este reemplaza el valor
predeterminado.
La Instrucción return en Python
La instrucción return permite que una función devuelva un valor y
termine su ejecución. Existen dos variantes:
1. return sin expresión:
o Termina la función inmediatamente y regresa al punto de
invocación.
o No es obligatorio si la función no necesita devolver un valor;
se ejecutará implícitamente al final de la función.
2. return con una expresión:
o Termina la función y devuelve el valor de la expresión
especificada.
o La función devuelve este valor como resultado, que puede
ser asignado a una variable o ignorado.
En ambos casos, return termina la ejecución de la función. La primera
variante se usa para finalizar la función antes de la última línea,
mientras que la segunda variante permite devolver un valor específico.
Acerca de None
None es un valor especial en Python que representa la ausencia de valor.
No es un valor en sí mismo y no debe usarse en operaciones aritméticas,
ya que causará un error.
Uso seguro de None:
1. Asignar None a una variable o devolverlo como resultado de una
función.
2. Comparar None con una variable para verificar su estado.
Por defecto, si una función no tiene una cláusula return, devuelve
implícitamente None.
Listas y Funciones en Python
1. Enviar una lista a una función:
o Puedes pasar una lista como argumento a una función,
siempre y cuando la función esté diseñada para manejar
listas.
o Si la función espera una lista y se le pasa un tipo incorrecto,
como un entero, se producirá un error.
2. Una lista como resultado de una función:
o Una función puede devolver una lista como resultado.
En resumen, tanto enviar listas a funciones como devolver listas desde
funciones es completamente válido en Python, siempre que la función
esté preparada para manejar estos casos.
Las Funciones y sus Alcances
1. Alcance de un Nombre:
o El alcance de un nombre (como una variable) es la parte del
código donde el nombre es reconocible.
o Un parámetro de función tiene alcance solo dentro de esa
función.
2. Visibilidad de Variables:
o Las variables definidas fuera de una función son accesibles
dentro de la función, pero solo para lectura.
o Si se define una variable con el mismo nombre dentro de la
función, esta oculta (o "sombra") la variable externa.
3. Palabra Clave global:
o Para modificar una variable definida fuera de una función, se
usa la palabra clave global.
o Esto permite que la función acceda y modifique la variable
externa en lugar de crear una nueva dentro de la función.
En resumen, las variables externas son accesibles dentro de las
funciones para lectura, pero se ocultan si se definen nuevas variables
con el mismo nombre dentro de la función. La palabra clave global
permite modificar variables externas desde dentro de la función.
En cuanto a los puntos clave sobre las tuplas, se destaca que son
colecciones de datos ordenadas e inmutables, definidas con paréntesis.
Cada elemento de la tupla puede ser de un tipo de dato diferente, y las
tuplas pueden contener otras tuplas o listas. También se menciona cómo
crear tuplas vacías o de un solo elemento, cómo acceder a los
elementos por índice, y se enfatiza que las tuplas son inmutables,
aunque se puede eliminar una tupla completa.
Tomate un descanso, haz algo que te relaje y vuelve a tu código con una
mente fresca.
Prueba unitaria: una técnica importante en programación que implica
escribir pruebas para verificar el comportamiento de tu código.
Excepciones en Python:1. En Python, hay dos tipos de errores: errores de
sintaxis y excepciones. Las excepciones ocurren durante la ejecución y
pueden ser manejadas con el bloque try-except.
Puedes capturar excepciones específicas y manejarlas de forma
elegante para evitar que tu programa se interrumpa
Puedes manejar múltiples excepciones en un solo bloque de código y
especificar cómo deseas tratar cada una de ellas.
Algunas excepciones integradas útiles en Python incluyen
ZeroDivisionError, ValueError, TypeError, AttributeError y SyntaxError.
Es importante probar y depurar tu código utilizando diversas técnicas,
como depuración de impresión y pedir a otros que revisen tu código.
Ejercicio: Si un usuario ingresa un 0, la salida del programa será
"Entrada errónea." debido a la excepción ZeroDivisionError.
Recuerda seguir estos consejos y técnicas para identificar y corregir
errores en tu código de manera efectiva. ¡No te rindas y sigue
practicando!