User Tools

Site Tools


apuntes:python

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
apuntes:python [2017/09/21 23:56] – [Módulos] Santiago Faciapuntes:python [2019/06/11 20:40] (current) – [GUI] Santiago Faci
Line 575: Line 575:
     * Si un atributo comienza con un guión bajo (''_velocidad'') se considera como protegido (//protected//)     * Si un atributo comienza con un guión bajo (''_velocidad'') se considera como protegido (//protected//)
     * Si el atributo comienza con dos guiones bajos (''<nowiki>__</nowiki>velocidad'') se le considera como privado (//private//     * Si el atributo comienza con dos guiones bajos (''<nowiki>__</nowiki>velocidad'') se le considera como privado (//private//
-  * No existe la sobreescritura de métodos como tal por lo que tendremos que optar por crear un método con parámetros opcionales y decidir qué hacer dentro del mismo:+  * No existe la sobrecarga de métodos como tal por lo que tendremos que optar por crear un método con parámetros opcionales y decidir qué hacer dentro del mismo:
 <code python> <code python>
 # Método con dos casos (simula la sobrecarga) # Método con dos casos (simula la sobrecarga)
Line 1019: Line 1019:
  
 <code python> <code python>
-import sqlite3 
- 
-conexion = sqlite3.connect("datos.db") 
-cursor = conexion.cursor() 
- 
 # Ejemplo que muestra como conectar y crear  # Ejemplo que muestra como conectar y crear 
 # una Base de Datos SQLite # una Base de Datos SQLite
Line 1172: Line 1167:
 Realmente la opción mas aconsejable es importar el paquete tal cual aunque ello nos obligue a escribir su nombre a modo de prefijo cada vez que invoquemos a alguna de sus funciones. En proyectos muy grandes a veces interesa saber de donde salen las funciones y de esa manera podremos distinguir claramente nuestro código del de los módulos que hayamos importado. En ocasiones puede ser recomendable un renombrado del módulo para aquellos que tengan un nombre largo o incómodo de escribir, pero siempre utilizando un segundo nombre que sea lo suficientemente descriptivo como para que sepamos a que módulo se refiere. Realmente la opción mas aconsejable es importar el paquete tal cual aunque ello nos obligue a escribir su nombre a modo de prefijo cada vez que invoquemos a alguna de sus funciones. En proyectos muy grandes a veces interesa saber de donde salen las funciones y de esa manera podremos distinguir claramente nuestro código del de los módulos que hayamos importado. En ocasiones puede ser recomendable un renombrado del módulo para aquellos que tengan un nombre largo o incómodo de escribir, pero siempre utilizando un segundo nombre que sea lo suficientemente descriptivo como para que sepamos a que módulo se refiere.
 ==== Paquetes ==== ==== Paquetes ====
 +
 +En el punto anterior hemos visto que podemos organizar el código en módulos. En Python un módulo es un fichero que contiene código que podremos reutilizar importándolo. En el caso de que tengamos varios módulos y queramos organizarlos todos juntos estaremos hablando de un **paquete**.
 +
 +Utilizar paquetes es la forma en la que podremos organizar nuestros proyectos más grandes en Python. Puesto que podemos almacenar varios módulos en cada paquete, podemos estructurar más todavía nuestro código evitando asi tener módulos demasiado grandes.
 +
 +En Python un paquete es cualquier carpeta que contenga en su interior un fichero vacío con el nombre ''<nowiki>__init__</nowiki>.py''. Todos los módulos que aparezcan en esa carpeta formarán parte de ese paquete, cuyo nombre será el nombre de la carpeta.
 +
 +Al final, la forma de importar los módulos de cada paquete es la misma que la que hemos usado en el apartado anterior a la hora de importar módulos por separado. Ahora, simplemente tendremos que utiliar el nombre del paquete delante del módulo de la forma ''import paquete.modulo''.
 +
 +Imaginemos que tenemos el siguiente paquete, compuesto a su vez de dos paquetes. Cada uno de estos dos paquetes tiene un módulo con varias funciones cada uno (podrían contener más de un módulo y la forma de trabajar con ellos sería la misma).
  
 <figure> <figure>
 {{ python_package.png }} {{ python_package.png }}
 <caption>Estructura del paquete calculadora</caption></figure> <caption>Estructura del paquete calculadora</caption></figure>
 +
 +Cada uno de los ficheros ''operaciones.py'' (se llaman igual pero no es necesario) contiene una serie de funciones, //basicas// por un lado:
  
 <file python operaciones.py> <file python operaciones.py>
Line 1193: Line 1200:
     return numero ** exponente     return numero ** exponente
 </file> </file>
 +
 +y de //funciones// por otro:
  
 <file python operaciones.py> <file python operaciones.py>
Line 1206: Line 1215:
     return math.tan(valor)     return math.tan(valor)
 </file> </file>
 +
 +Así, si desde fuera del paquete principal ''calculadora'', queremos importar cualquiera de los módulos, procederemos de la siguiente forma:
  
 <code python> <code python>
Line 1214: Line 1225:
 </code> </code>
  
 +Y a partir de ahi podemos importar los módulos de las diferentes formas que hemos visto en el apartado anterior sobre los mismos.
 ===== GUI ===== ===== GUI =====
  
Line 1231: Line 1243:
  
     def __crearVentana(self):     def __crearVentana(self):
- 
         self.__tfTexto = tk.Text(self, width=20, height=1)         self.__tfTexto = tk.Text(self, width=20, height=1)
         self.__tfTexto.grid()         self.__tfTexto.grid()
apuntes/python.1506038197.txt.gz · Last modified: 2019/01/04 13:22 (external edit)