apuntes:python
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
apuntes:python [2017/09/21 23:38] – [Módulos] Santiago Faci | apuntes:python [2019/06/11 20:40] (current) – [GUI] Santiago Faci | ||
---|---|---|---|
Line 575: | Line 575: | ||
* Si un atributo comienza con un guión bajo ('' | * Si un atributo comienza con un guión bajo ('' | ||
* Si el atributo comienza con dos guiones bajos (''< | * Si el atributo comienza con dos guiones bajos (''< | ||
- | * No existe la sobreescritura | + | * No existe la sobrecarga |
<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(" | ||
- | 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 1120: | Line 1115: | ||
La forma de utilizar esos módulos es utilizando la palabra reservada '' | La forma de utilizar esos módulos es utilizando la palabra reservada '' | ||
- | Por ejemplo, el módulo '' | + | Por ejemplo, |
+ | |||
+ | <file python operaciones.py> | ||
+ | def siguiente(numero): | ||
+ | return numero + 1 | ||
+ | |||
+ | def anterior(numero): | ||
+ | if (numero > 0): | ||
+ | numero -= 1 | ||
+ | return numero | ||
+ | </ | ||
+ | |||
+ | Y ahora quiero importar ese módulo para utilizar algunas | ||
+ | |||
+ | Importar el módulo sin más, de forma que tendremos que escribir su nombre cuando queramos utilizar sus funciones: | ||
<code bash> | <code bash> | ||
- | >>> | + | >>> |
- | >>> | + | >>> |
4 | 4 | ||
</ | </ | ||
+ | |||
+ | Podemos importarlo y renombrarlo, | ||
<code bash> | <code bash> | ||
- | >>> | + | >>> |
+ | >>> | ||
+ | 4 | ||
</ | </ | ||
+ | También podemos importar todas las funciones del módulo y evitar tener que utilizar su nombre como prefjo antes de invocarlas: | ||
+ | <code bash> | ||
+ | >>> | ||
+ | >>> | ||
+ | 0 | ||
+ | </ | ||
+ | También podemos importar sólo algunas de sus funciones, y utilizarlas entonces sin usar el nombre del módulo como prefijo: | ||
+ | |||
+ | <code bash> | ||
+ | >>> | ||
+ | >>> | ||
+ | 4 | ||
+ | >>> | ||
+ | Traceback (most recent call last): | ||
+ | File "< | ||
+ | NameError: name ' | ||
+ | </ | ||
+ | |||
+ | 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 ''< | ||
+ | |||
+ | 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 '' | ||
+ | |||
+ | 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). | ||
< | < | ||
{{ python_package.png }} | {{ python_package.png }} | ||
< | < | ||
+ | |||
+ | Cada uno de los ficheros '' | ||
<file python operaciones.py> | <file python operaciones.py> | ||
Line 1156: | Line 1200: | ||
return numero ** exponente | return numero ** exponente | ||
</ | </ | ||
+ | |||
+ | y de // | ||
<file python operaciones.py> | <file python operaciones.py> | ||
Line 1169: | Line 1215: | ||
return math.tan(valor) | return math.tan(valor) | ||
</ | </ | ||
+ | |||
+ | Así, si desde fuera del paquete principal '' | ||
<code python> | <code python> | ||
Line 1177: | Line 1225: | ||
</ | </ | ||
+ | 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 1194: | Line 1243: | ||
def __crearVentana(self): | def __crearVentana(self): | ||
- | |||
self.__tfTexto = tk.Text(self, | self.__tfTexto = tk.Text(self, | ||
self.__tfTexto.grid() | self.__tfTexto.grid() |
apuntes/python.1506037080.txt.gz · Last modified: 2019/01/04 13:22 (external edit)