Teórica del día con todo el código y explicaciones con apuntes: programacionfacil.org/blog/programacion-modular-con-python/ Ejercicios del día: programacionfacil.org/blog/ejercicios-de-programacion-modular-con-python/ Soluciones de los ejercicios: programacionfacil.org/blog/soluciones-de-ejercicios-de-programacion-modular-con-python/
Buena tarde, tu curso esta muy interesante y he aprendido un montón. Gracias por invertir tu tiempo en la comunidad. En líneas abajo a varios el código no les reconoce el nombre de los métodos (suma, resta...), me pasaba lo miso y lo corregí empleando la importación así: from operaciones2 import division, exponente, modulo, multiplicacion, resta, suma y en el llamado del código resultado = round(division.dividir(numero_1, numero_2), 2) y así para los otros operadores.
CONTENIDO DEL DÍA 17 00:12 Parte teórica 00:40 ¿Qué es la programación modular? 00:52 ¿Qué aporta la programación modular? 01:30 Tecnología modular 03:27 ¿Cómo se crea un módulo en Python? 03:42 El módulo (biblioteca) Tkinter y sus submódulos 04:41 Creando un módulo en Python 06:03 Namespace (espacio de nombres) y scope (alcance o ámbito) 06:11 ¿Qué es el alcance o scope? 06:21 Alcance local y global 09:10 ¿Qué son los namespace? 09:53 Comunicar el espacio de nombres local con el global 11:14 ¿Por qué el "espacio de nombres" se llama así? 11:25 Colisiones de nombres 12:51 El alcance de bloque en Python 18:15 Uso del wildcard, comodín (*) en las importaciones 19:16 Importar el módulo math de Python 20:04 Problemas con el wildcard de las importaciones 26:00 Alias en las importaciones de Python 26:52 Depurar código 27:12 Extensión VSCode corrector ortográfico en español 27:51 ¿Qué es la depuración del código? 28:31 Buenas prácticas con alias en Python 29:19 Importar módulos propios o de terceros 29:26 Crear tu propio módulo de Python 30:08 Importar tu propio módulo de Python 32:42 Importar módulos en carpetas con Python 35:55 Parte práctica 36:07 Ejercicio resuelto de Python 37:50 Proyecto resuelto de Python
Importante solo para aquellos que les interesa 08:41: Entonces como puedo trabajar con mi función según lo que ella hace en todo el correr del programa? si a mi me interesa algo especifico de una función que tengo, como puedo tomar ese valor sin la necesidad de tener que retornar la función(porque no siempre vamos a retornar mas de un valor, esto depende de tu programa)? Bueno, esto fue algo en lo que me encontré en aprietos, en el proyecto de hacer un login para la tienda de las motos, yo lo hice con Tkinter, Pyhton y MySQL, MySQL Workbench. a su vez hice también una interfaz muy sencilla para la tienda, mysql almacenaba los productos y los users information. pero a medida que iba avanzando( se me hizo un lio el tema de destruir ventanas y declarar una nueva como principal, porque no me gustaba que se abriera una ventana arriba de la otra con TopLevel a no ser que quisiera yo de alguna forma crear una ventana flotante que me diera un mensaje como "Gracias por tu compra" o algo así) me surgió la necesidad de mostrar, en la interfaz de la tienda, el nombre del usuario logueado actualmente(si ingresas, que la tienda, en una esquina muestre tu nombre básicamente) pero aquí me enfrente al grandioso tema de Scopes, y es que había una función especifica que traía todo de la Base de datos(Función Login) y el problema es que entre ellos traía el nombre del usuario, pero el problema era que yo declaraba una variable en dicha función que tomaría el valor del nombre del usuario logueado luego de traerlo por consultas SQL y posteriormente recibirlo con una tupla. tenia muchas soluciones realmente, pero la mas clara eran dos(Pensemos que todo mi login eh interfaz de tienda, estaba construido solo con funciones a excepción de la ventana principal, ya que me vi en la necesidad de darle la oportunidad al usuario de desloguearse, y volver a entrar, volver hacia atrás etc, la única forma que encontré para realizar esta " libertad del usuario" era a funciones) , una vez el usuario este en la interfaz de la tienda, traerme alli el nombre del usuario, problema? que estaría haciendo lo mismo que la vez anterior, estaría limitando el scope de esa variable solo a la interfaz de la tienda(donde se muestran todos los productos etc), la otra solución definitiva, es que cuando se vean en la necesidad de trabajar solo con una cosa especifica de su función que no necesariamente la quieren retornar, les invito a que creen esa variable en el alcance global del programa y en la funcion, antes de utilizarla, colocan: global , para luego si utilizarla en su función para x cosa, esto que hace? le dejamos en claro a la funcion que esa variable, no le corresponde un alcance local, sino que su Scope será Global, por ende, lo que pase en la función, afectara en el alcance global también, de esta forma, el nombre del usuario, en mi programa podía mostrarlo donde quisiera(siempre que este logueado el usuario claro)
Hola, felicitaciones muy buen curso. Muchísimas gracias port tus aportaciones para mi aprendizaje en Python. Mencionaste que tienes un corrector de texto en español, me gostaria saber dónde lo puedo obtener. Saludos y muy grato. Abrazos desde Brasil.
Hola, pregunta: Como configuras o que descargas en VSC para que las funciones que te pudieran dar problemas ej. 17:21 se subrayen de rojo, ya que a mi no me avisa nada.
Hola, para poder realizar el ejercicio con éxito, tuve que colocar la importación completa: import operaciones.suma as sum , y luego llamar al módulo con: sum.suma (numero1, numero2) Intenté hacerlo sólo con import operaciones pero me generaba un error...
Muchas gracias por el aporte!. Yo no puedo importar a no ser que lo tenga en la misma carpeta los módulos que el archivo al que hago la importación. Alguien me puede decir qué estoy haciendo mal? Mil gracias!!!
Ahora tengo una inquietud, como hacemos para que los resultados numéricos ya sea por consola o Tkinter se muestren con la separación de los puntos de mil, ejemplo $25.500 gracias.
Hola, bueno, más adelante seguimos con Tkinter para más proyectos, pero si te saltas solo el capítulo 14 con el tema de las imágenes, seguramente puedas seguir el resto del curso. ¿Qué imágenes no te dejaba descargar? ¿Las que tengo en mi web?
Hola, asegúrate que tienes el archivo desde el que haces las importaciones, en la raíz (por ejemplo). En esta misma carpeta, se supone que tienes otra que se llama operaciones. En ese caso, con "import operaciones" te tendría que importar todos los módulos que tengas dentro de la carpeta operaciones.
@@ProgramacionFacilYT Hola disculpa, tengo el mismo problema teniendo: from operaciones import * Me saca: NameError: name 'suma' is not defined. Teniendo suma.py dentro de operaicones y calculadora.py dentro de carpeta calculadora, lo mismo para los otros.
Hola, si hago esto: from operaciones.suma import * si entra a la carpeta operaciones y funciona solo para suma, pero entonces como llamo a los demás?. Saludos
@@villanuevatrejo Me pasa lo mismo. He probado sacando el archivo fuera de la raiz e importando calculadora.operaciones pero no funcionaba tampoco. Tuve que importar los modulos individualmente para que funcionen import operaciones.suma as sum import operaciones.resta as res import operaciones.multiplicacion as mul import operaciones.division as div import operaciones.modulo as mod import operaciones.exponente as exp De esta manera queda nuevamente funcional la calculadora. Un saludo
Teórica del día con todo el código y explicaciones con apuntes:
programacionfacil.org/blog/programacion-modular-con-python/
Ejercicios del día:
programacionfacil.org/blog/ejercicios-de-programacion-modular-con-python/
Soluciones de los ejercicios:
programacionfacil.org/blog/soluciones-de-ejercicios-de-programacion-modular-con-python/
Buena tarde, tu curso esta muy interesante y he aprendido un montón. Gracias por invertir tu tiempo en la comunidad.
En líneas abajo a varios el código no les reconoce el nombre de los métodos (suma, resta...), me pasaba lo miso y lo corregí empleando la importación así: from operaciones2 import division, exponente, modulo, multiplicacion, resta, suma y en el llamado del código resultado = round(division.dividir(numero_1, numero_2), 2) y así para los otros operadores.
Hola, muchas gracias. El último ejercicio tenía un fallo. Lo explico al final del capítulo 18 que acabo de subir. ¡Saludos!
Genial, como todo lo que explicas. Más claro imposible
¡Muchas gracias! 🙂
Muy buena clase y muy clara su explicación.
Estás haciendo un excelente trabajo con este curso. Mil gracias
¡Muchas gracias! 😃
Perfecta explicación. Me ha quedado clarísimo. Mil gracias
CONTENIDO DEL DÍA 17
00:12 Parte teórica
00:40 ¿Qué es la programación modular?
00:52 ¿Qué aporta la programación modular?
01:30 Tecnología modular
03:27 ¿Cómo se crea un módulo en Python?
03:42 El módulo (biblioteca) Tkinter y sus submódulos
04:41 Creando un módulo en Python
06:03 Namespace (espacio de nombres) y scope (alcance o ámbito)
06:11 ¿Qué es el alcance o scope?
06:21 Alcance local y global
09:10 ¿Qué son los namespace?
09:53 Comunicar el espacio de nombres local con el global
11:14 ¿Por qué el "espacio de nombres" se llama así?
11:25 Colisiones de nombres
12:51 El alcance de bloque en Python
18:15 Uso del wildcard, comodín (*) en las importaciones
19:16 Importar el módulo math de Python
20:04 Problemas con el wildcard de las importaciones
26:00 Alias en las importaciones de Python
26:52 Depurar código
27:12 Extensión VSCode corrector ortográfico en español
27:51 ¿Qué es la depuración del código?
28:31 Buenas prácticas con alias en Python
29:19 Importar módulos propios o de terceros
29:26 Crear tu propio módulo de Python
30:08 Importar tu propio módulo de Python
32:42 Importar módulos en carpetas con Python
35:55 Parte práctica
36:07 Ejercicio resuelto de Python
37:50 Proyecto resuelto de Python
Excelente video. Por favor, continúa con el curso. Saludos
¡Muchas gracias! Sí, hoy hay nuevo capítulo triple, bastante largo. ¡Saludos!
Son muy buenos para el aprendizaje y el entendimiento este tipo de de videos. Gracias
mil gracias por compartir este curso y tus conocimientos
¡Muchas gracias! Y lo que queda todavía 😃. ¡Saludos!
Que buen video mi hermano. muchas gracias por tan buen contenido
Cómo siempre..el mejor
¡Muchas gracias! 🙂
Importante solo para aquellos que les interesa 08:41: Entonces como puedo trabajar con mi función según lo que ella hace en todo el correr del programa? si a mi me interesa algo especifico de una función que tengo, como puedo tomar ese valor sin la necesidad de tener que retornar la función(porque no siempre vamos a retornar mas de un valor, esto depende de tu programa)?
Bueno, esto fue algo en lo que me encontré en aprietos, en el proyecto de hacer un login para la tienda de las motos, yo lo hice con Tkinter, Pyhton y MySQL, MySQL Workbench. a su vez hice también una interfaz muy sencilla para la tienda, mysql almacenaba los productos y los users information. pero a medida que iba avanzando( se me hizo un lio el tema de destruir ventanas y declarar una nueva como principal, porque no me gustaba que se abriera una ventana arriba de la otra con TopLevel a no ser que quisiera yo de alguna forma crear una ventana flotante que me diera un mensaje como "Gracias por tu compra" o algo así) me surgió la necesidad de mostrar, en la interfaz de la tienda, el nombre del usuario logueado actualmente(si ingresas, que la tienda, en una esquina muestre tu nombre básicamente) pero aquí me enfrente al grandioso tema de Scopes, y es que había una función especifica que traía todo de la Base de datos(Función Login) y el problema es que entre ellos traía el nombre del usuario, pero el problema era que yo declaraba una variable en dicha función que tomaría el valor del nombre del usuario logueado luego de traerlo por consultas SQL y posteriormente recibirlo con una tupla. tenia muchas soluciones realmente, pero la mas clara eran dos(Pensemos que todo mi login eh interfaz de tienda, estaba construido solo con funciones a excepción de la ventana principal, ya que me vi en la necesidad de darle la oportunidad al usuario de desloguearse, y volver a entrar, volver hacia atrás etc, la única forma que encontré para realizar esta " libertad del usuario" era a funciones) , una vez el usuario este en la interfaz de la tienda, traerme alli el nombre del usuario, problema? que estaría haciendo lo mismo que la vez anterior, estaría limitando el scope de esa variable solo a la interfaz de la tienda(donde se muestran todos los productos etc), la otra solución definitiva, es que cuando se vean en la necesidad de trabajar solo con una cosa especifica de su función que no necesariamente la quieren retornar, les invito a que creen esa variable en el alcance global del programa y en la funcion, antes de utilizarla, colocan: global , para luego si utilizarla en su función para x cosa, esto que hace? le dejamos en claro a la funcion que esa variable, no le corresponde un alcance local, sino que su Scope será Global, por ende, lo que pase en la función, afectara en el alcance global también, de esta forma, el nombre del usuario, en mi programa podía mostrarlo donde quisiera(siempre que este logueado el usuario claro)
Hoy he aprendido muchas cosas👍
Estupendo 👌🙂. Un saludo.
Hola, felicitaciones muy buen curso. Muchísimas gracias port tus aportaciones para mi aprendizaje en Python. Mencionaste que tienes un corrector de texto en español, me gostaria saber dónde lo puedo obtener. Saludos y muy grato. Abrazos desde Brasil.
Hola, pregunta: Como configuras o que descargas en VSC para que las funciones que te pudieran dar problemas ej. 17:21 se subrayen de rojo, ya que a mi no me avisa nada.
Hola, tengo la extensión Pylance de Microsoft.
Hola, para poder realizar el ejercicio con éxito, tuve que colocar la importación completa: import operaciones.suma as sum , y luego llamar al módulo con: sum.suma (numero1, numero2) Intenté hacerlo sólo con import operaciones pero me generaba un error...
Muchas gracias por el aporte!. Yo no puedo importar a no ser que lo tenga en la misma carpeta los módulos que el archivo al que hago la importación. Alguien me puede decir qué estoy haciendo mal? Mil gracias!!!
Una consulta, no me funciona con "from operaciones import *" , a que se deberá?
solo me funciona con "import operaciones as op *"
gracias, saludos
Ahora tengo una inquietud, como hacemos para que los resultados numéricos ya sea por consola o Tkinter se muestren con la separación de los puntos de mil, ejemplo $25.500 gracias.
Hola, quizás esto te sirva. Alguien me preguntó hace algún tiempo lo mismo:
th-cam.com/users/shortsb6pNDZNrfAg
Yo no se si hice mal pero me salte tkinter porque no me dejaba descargar las imágenes y pase directo acá
Hola, bueno, más adelante seguimos con Tkinter para más proyectos, pero si te saltas solo el capítulo 14 con el tema de las imágenes, seguramente puedas seguir el resto del curso. ¿Qué imágenes no te dejaba descargar? ¿Las que tengo en mi web?
@@ProgramacionFacilYT ya me dejo
Me pone
suma not defined
resta not defined
multiplicacion not defined
...
Y así con todas
POW!!
Sólo me reconoce los módulos de la misma carpeta, pero no desde otra carpeta diferente
Hola, asegúrate que tienes el archivo desde el que haces las importaciones, en la raíz (por ejemplo). En esta misma carpeta, se supone que tienes otra que se llama operaciones.
En ese caso, con "import operaciones" te tendría que importar todos los módulos que tengas dentro de la carpeta operaciones.
@@ProgramacionFacilYT Hola disculpa, tengo el mismo problema teniendo: from operaciones import * Me saca: NameError: name 'suma' is not defined. Teniendo suma.py dentro de operaicones y calculadora.py dentro de carpeta calculadora, lo mismo para los otros.
Hola, si hago esto: from operaciones.suma import * si entra a la carpeta operaciones y funciona solo para suma, pero entonces como llamo a los demás?. Saludos
@@villanuevatrejo
Me pasa lo mismo. He probado sacando el archivo fuera de la raiz e importando calculadora.operaciones pero no funcionaba tampoco.
Tuve que importar los modulos individualmente para que funcionen
import operaciones.suma as sum
import operaciones.resta as res
import operaciones.multiplicacion as mul
import operaciones.division as div
import operaciones.modulo as mod
import operaciones.exponente as exp
De esta manera queda nuevamente funcional la calculadora.
Un saludo