Programacion modular Py

Programación modular

Funciones

Por función podemos entender como un fragmento de código con un nombre asociado que realiza una serie de tareas y devuelve un valor, los fragmentos de código tienen un nombre asociado y no devuelve valores se les conoce como “procedimientos”. Python no posee los llamados “procedimientos”, al no tener especificado un valor de retorno, el lenguaje devuelve el valor “None (nada)”.

Para definir las funciones usamos la palabra clave “def” seguida del nombre de la función, en paréntesis los argumentos separados por comas, después de los dos puntos tendremos las líneas de código que conforman el condigo de la función. Como una buena práctica tenemos como primera línea de código de la función la documentación, también conocida como “docstring” y sirve a modo de documentar la función.

Para hacer uso de las funciones tenemos que usar su nombre y en paréntesis los parámetros que le pasaremos a la función, aquí un ejemplo de su uso:

El número de valores que se pasan como parámetro al llamar a la función tiene que coincidir con el número de parámetros que la función acepta según la declaración de la función. En caso contrario Python se quejará.

Funciones propias de Python

El intérprete de Python tiene una serie de funciones y tipos incluidos en él que están siempre disponibles. En la siguiente imagen se muestran cuáles son y en orden alfabético:

Nota

Es llamado para implementar “operator.index()”, y cuando sea que Python necesite convertir sin pérdidas el objeto numérico a un objeto entero (tal como en la segmentación o slicing, o las funciones incorporadas “bin()”, “hex()” y “oct()”). La presencia de este método indica que el objeto numérico es un tipo entero que debe retornar un entero.

A continuación, mencionaremos algunas de las funciones más utilizadas de la lista anterior.

list()

Las listas en Python son estructuras de datos altamente flexibles que almacenan de manera ordenada un conjunto de elementos que no necesariamente son del mismo tipo. A diferencia de otros lenguajes de programación donde una lista equivale a un array y los elementos deben ser del mismo tipo, Python permite mezclar tipos de datos en una lista, incluyendo enteros, flotantes, caracteres, cadenas de texto, booleanos y objetos.

type()

La función “type()” en Python es una función incorporada que se utiliza para obtener el tipo de un objeto. La función type() devuelve el tipo del objeto especificado y su estructura es la siguiente:“class type(name, bases, dict)”.

La cadena de caracteres “name” es el nombre de la clase y se convierte en el atributo “__name__”. La tupla “bases” contiene las clases base y se convierte en el atributo “__bases__”; si está vacío, se agrega “object”, la base última de todas las clases. El diccionario “dict” contiene definiciones de métodos y atributos para el cuerpo de la clase; se puede copiar o ajustar antes de convertirse en el atributo “__dict__”. Las siguientes dos declaraciones crean objetos idénticos type:

tuple()

Las Python tuples son colecciones de datos idénticos o distintos clasificados con un índice y que no pueden ser modificados, teniendo como estructura las siguiente: “class type(name, bases, dict)

Con tres argumentos, retorna un nuevo tipo objeto. Esta es esencialmente una forma dinámica de la declaración class. La cadena de caracteres “name” es el nombre de la clase y se convierte en el atributo “__name__”. La tupla “bases” contiene las clases base y se convierte en el atributo “__bases__”; si está vacío, se agrega “object”, la base última de todas las clases. El diccionario “dict” contiene definiciones de métodos y atributos para el cuerpo de la clase; se puede copiar o ajustar antes de convertirse en el atributo “__dict__”. Las siguientes dos declaraciones crean objetos idénticos type:

math()

Esta función proporciona acceso a las funciones matemáticas definidas en el estándar de C.

Estas funciones no pueden ser usadas con números complejos; usa las funciones con el nombre de “cmath” si requieres soporte para números complejos. La distinción entre las funciones que admiten números complejos y las que no, se hace debido a que la mayoría de los usuarios no quieren aprender tantas matemáticas como se requiere para comprender los números complejos. Recibir una excepción en lugar de un resultado complejo permite la detección temprana del número complejo inesperado utilizado como parámetro, de modo que el programador pueda determinar cómo y porqué se generó en primer lugar.

Esta función proporciona acceso a funciones matemáticas según el estándar de C. Sin embargo, es importante destacar que estas funciones no son compatibles con números complejos. Si necesitas trabajar con números complejos, debes usar las funciones de la biblioteca “cmath“.

La razón detrás de esta distinción es que la mayoría de los usuarios no necesitan manejar números complejos en sus cálculos cotidianos. Al lanzar una excepción en lugar de un resultado complejo cuando se usan números complejos de forma inesperada, se permite una detección temprana de errores. Esto ayuda al programador a entender cómo y por qué se generó ese número complejo inesperado en primer lugar.

En resumen, la función “math()” en Python es útil para operaciones matemáticas estándar, pero si necesitas trabajar con números complejos, es mejor recurrir a las funciones de la biblioteca “cmath“.

Para más información te invitamos a consulta la documentación de la función math() con el siguiente boton.

print()

La función de “print()” tienen como propósito mostrar mensajes en la pantalla, estos mensajes pueden ser num´s, string, boolean, etc. Para muchas aplicaciones es necesario poder imprimir en la pantalla cadenas o resultados intermedios. Python print también se usa para depurar programas sencillos, aunque no se trate de una buena práctica en programación. Si escribes la correspondiente llamada “print” en un bucle “for” en Python o un bucle “while” de Python, puedes determinar el número de pasadas del bucle. Del mismo modo, con una simple llamada a “print”, puedes averiguar si se ha ejecutado una sentencia “if else” de Python.

La función “print()” en Python se usa para mostrar mensajes en la pantalla. Estos mensajes pueden ser números, texto, booleanos, etc. Es útil cuando necesitas imprimir cadenas o resultados mientras trabajas en tu programa.

Aunque también se utiliza para depurar programas sencillos, no se considera una buena práctica en programación avanzada. Por ejemplo, si colocas un “print” dentro de un bucle “for” o “while“, puedes contar el número de veces que el bucle se repite. De la misma manera, al usar “print” después de una sentencia “if else“, puedes verificar si esa sentencia se ha ejecutado o no.

Un ejemplo bien conocido de llamada a Python print en Python es el programa “Hello world”:

La estructura de esta función es la siguiente: “print(*objects, sep=’ ‘, end=’\n’, file=None, flush=False)

Imprime “objects” al flujo de texto file, separándolos por “sep” y seguidos por “end”. “sep”, “end”, “file” y “flush”, si están presentes, deben ser dados como argumentos por palabra clave.

El argumento file debe ser un objeto que implemente un método write(string); si éste no está presente o es None, se usará sys.stdout. Dado que los argumentos mostrados son convertidos a cadenas de texto, print() no puede ser utilizada con objetos fichero en modo binario. Para esos, utiliza en cambio file.write(…).

len()

Retorna el tamaño (el número de elementos) de un objeto. El argumento puede ser una secuencia (como una cadena, un objeto byte, una tupla, lista o rango) o una colección (como un diccionario, un set o un frozen set).

repalce()

El método “replace” de la clase string devuelve una copia del string con todas las ocurrencias del substring “sub” reemplazadas por el “substring” nuevo. Su estructura o uso es el siguiente “replace(sub, nuevo)”.

str()

Retorna una representación en forma de cadena de caracteres de “object”. Si no se proporciona ningún valor, retorna una cadena vacía. Si se proporciona, el comportamiento de “str()” depende de los valores pasados en los parámetros “encoding” y “errors”.

ord()

Al proporcionarle una cadena representando un carácter Unicode, retorna un entero que representa el código Unicode de ese carácter. Por ejemplo, “ord(‘a’)” retorna el entero 97 y “ord(‘€’)” (símbolo del Euro) retorna 8364. Esta es la función inversa de chr().

input()

Su estructura es “input(prompt)”, si el argumento “prompt” está presente, se escribe a la salida estándar sin una nueva línea a continuación. La función lee entonces una línea de la entrada, la convierte en una cadena (eliminando la nueva línea), y retorna eso. Es decir, es una función que se utiliza para la entrada de datos por parte de un usuario en los programas desarrollados en Python, esa entrada se puede almacenar en una variable.

sum()

La función “sum()” en Python se utiliza para sumar todos los elementos de una lista, tupla o cualquier iterable. Su propósito es simplificar la tarea de sumar varios números sin tener que escribir un bucle manualmente.

min()

Retorna el menor elemento en un iterable o el menor de dos o más argumentos. Si se le indica un argumento posicional, debe ser un iterable. El menor elemento del iterable es retornado. Si dos o más argumentos posicionales son indicados, el menor de los argumentos posicionales es retornado.

max()

Retorna el elemento mayor en un iterable o el mayor de dos o más argumentos.Si un argumento posicional es dado, debe ser un iterable. El elemento mayor en el iterable es retornado. Si dos o más argumentos posicionales son indicados, el mayor de los argumentos posicionales será retornado, es el opuesto a la función “min()”.

range()

range(start, stop[, step])

Los parámetros usados por el constructor del rango deben ser números enteros (o bien objetos de tipo “int” o instancias de una clase que implemente el método especial “__index__()”). Si el parámetro “step” se omite, se asume el valor 1. Si se omite el parámetro “start”, se toma como 0. Si step es cero, se lanza una excepción de tipo “ValueError”.

roun()

round(number, ndigits=None)

Retorna “number” redondeado a “ndigits” de precisión después del punto decimal. Si “ndigits” es omitido o es None, retorna el entero más cercano a su entrada.

Nota. El comportamiento de “round()” para flotantes puede ser sorprendente: por ejemplo, “round(2.675, 2)” da 2.67 en vez de los 2.68 esperados. Esto no es un error: es el resultado del hecho de que la mayoría de las fracciones decimales no se puede representar de forma exacta como flotantes.

hex()

Convierte un número entero a una cadena hexadecimal de minúsculas con el prefijo «0x». Si x no es un objeto de la clase Python int, tiene que definir un método “__index__()” que retorne un entero. Aquí un ejemplo:

abs()

Devuelve el valor absoluto de un número. El argumento puede ser un número entero, un número de punto flotante o un objeto que implemente “__abs__()”. Si el argumento es un número complejo, se devuelve su magnitud.

id()

Retorna la «identidad» de un objeto. Esto es un entero que está garantizado que es único y constante para este objeto durante toda su existencia. Dos objetos con existencias en el tiempo que no coincidan pueden tener el mismo valor de “id()”.

bin()

Convierte un número entero a una cadena binaria con prefijo «0b». El resultado es una expresión de Python válida. Si x no es un objeto de clase int en Python, tiene que definir un método “__index__()” que retorne un entero. Aquí un ejemplo de cómo usarlo:

Importacion de biblotecas

Una biblioteca en Python es un conjunto de funciones y módulos predefinidos que pueden ser utilizados para realizar tareas específicas. Estas bibliotecas están escritas en Python u otros lenguajes de programación y se utilizan para extender las capacidades del lenguaje base. Por ejemplo, la biblioteca “math” contiene funciones matemáticas como sin(), cos(), sqrt(), etc.

Ahora, para importar una biblioteca en Python, utilizamos la instrucción import. Aquí hay una explicación de las partes de la instrucción de importación:

 

  1. Nombre de la biblioteca: Es el nombre de la biblioteca que queremos importar. Por ejemplo, si queremos importar la biblioteca “math“, escribimos “import math”.
  2. Alias (opcional): A veces, queremos utilizar un nombre corto para referirnos a la biblioteca importada. Esto se hace usando la palabra clave as seguida del alias deseado. Por ejemplo, si queremos usar “mt” como alias para “math“, escribimos “import math” as “mt”.

Módulos específicos (opcional): Algunas bibliotecas tienen varios módulos y submódulos. Si solo necesitamos importar uno de esos módulos, podemos hacerlo utilizando la sintaxis “from nombre_de_la_biblioteca import nombre_del_modulo”. Por ejemplo, para importar solo la función sqrt() del módulo “math“, escribimos “from math import sqrt”.

Algunas de las bibliotecas más usadas de Python son:

  1. NumPy: Biblioteca fundamental para computación numérica en Python. Proporciona estructuras de datos como arrays y matrices, así como funciones para operaciones matemáticas avanzadas.

 

  1. Pandas: Utilizada para manipulación y análisis de datos. Ofrece estructuras de datos como DataFrames y Series, facilitando la limpieza, transformación y exploración de conjuntos de datos.

 

  1. Matplotlib: Biblioteca para visualización de datos en Python. Permite crear gráficos estáticos, gráficos de barras, histogramas, diagramas de dispersión, entre otros.

 

  1. Seaborn: Construida sobre Matplotlib, Seaborn proporciona una interfaz de alto nivel para la creación de gráficos estadísticos más atractivos y complejos.

 

  1. Scikit-learn: Biblioteca de aprendizaje automático (machine learning) que ofrece herramientas para clasificación, regresión, clustering, preprocesamiento de datos y evaluación de modelos.

 

  1. TensorFlow y PyTorch: Dos de las bibliotecas más populares para el desarrollo de modelos de aprendizaje profundo (deep learning). Ofrecen herramientas para construir y entrenar redes neuronales.

 

  1. Requests: Biblioteca para realizar solicitudes HTTP en Python. Se utiliza para interactuar con APIs web, descargar archivos, realizar scraping, entre otras tareas relacionadas con la comunicación web.

 

  1. Beautiful Soup: Utilizada para el análisis y extracción de información de documentos HTML y XML. Es especialmente útil para realizar web scraping.

 

  1. Django y Flask: Dos de los frameworks web más populares en Python. Django es un framework de alto nivel para desarrollo web completo, mientras que Flask es más ligero y se utiliza para aplicaciones web más pequeñas y rápidas.

 

  1. SQLAlchemy: Biblioteca para trabajar con bases de datos relacionales en Python. Proporciona una capa de abstracción para interactuar con bases de datos SQL de manera más fácil y eficiente.

 

Para consultar la lista entera de las bibliotecas de Python puedes acceder dando clic en el siguiente botón.

Uso del PIP

¿Que son los modulos?

Cuando trabajas en Python, es importante saber que si cierras y vuelves a abrir el programa, perderás las definiciones que hayas hecho como funciones y variables. Para escribir programas más largos, es mejor usar un editor de texto y guardar el código en un archivo. Esto se llama crear un script. Conforme tu programa crezca, puedes dividirlo en varios archivos para facilitar su mantenimiento. También puedes reutilizar funciones en diferentes programas sin tener que copiar su definición cada vez.

Python ofrece una forma de guardar definiciones en un archivo y usarlas en otros programas o en el programa principal. Estos archivos se llaman módulos; puedes importar las definiciones de un módulo a otros módulos o al programa principal.

Uso del PIP

Python tiene una comunidad activa de soporte de contribuyentes y usuarios que también hacen que su software esté disponible para que otros desarrolladores de Python lo usen bajo términos de licencia de código abierto.

Esto permite a los usuarios de Python compartir y colaborar de manera efectiva, beneficiándose de las soluciones que otros ya han creado para problemas comunes (¡y a veces incluso raros!), además de contribuir potencialmente con sus propias soluciones al grupo común. Si quieres consultar la lista de los paquetes bajo licencias de código abierto disponibles para otros usuarios de Python puedes consultar en el siguiente botón:

Además, la palabra “pip” es el programa de instalación preferido. Desde Python 3.4 viene incluido por defecto con los instaladores binarios de Python.L as herramientas estándar de empaquetado están diseñadas para que se usen desde la línea de comandos.

El siguiente comando instalará la última versión de un módulo y sus dependencias desde el Índice de Paquetes de Python:

Es posible especificar una versión exacta o mínima directamente en la línea de comandos. Cuando se use un operando comparador como >, < o cualquier otro carácter especial que puede ser interpretado por el intérprete de comandos, el nombre del paquete y la versión deben ir entre comillas dobles:

Normalmente, si ya hay instalado un módulo adecuado, intentar instalarlo otra vez no tendrá efecto alguno. Actualizar módulos existentes requiere que se solicite explícitamente:

¿Cómo usar el pip en Visual Studio Code?

Para usar el “pip” en visual studio code se hace a través de la terminal. Para consultar la versión de “pip” se hace atreves de “pip –versión” hace de la siguiente manera:

En caso de que se requiera actualizar el “pip” lo podemos hacer desde la terminal pero usando la palabra “update

Ejemplo del uso de “pip”, para este caso instalaremos la paquetería “matplotlib”, usaremos “pip install matplotlib” para comenzar el proceso de descarga, este proceso puede tardar poco o mucho tiempo dependiendo del tamaño del paquete o librería que deseamos instalar.

Una vez terminado el proceso, nos aparece lo siguiente:

Para revisar si la instalación fue exitosa podemos usar “pip list” para ver la lista de los paquetes que tenemos instalados y sus versiones.