• Curso De Python3 Desde 0 (6ta Parte)

 #415549  por KHC
 08 Jun 2013, 10:06
Les dejo la sexta entrega del curso y guardaremos un poco el aliento para entrar a la POO y a el
tema de las Clases y algo un poco mas robusto, hasta entonces!

Disfruten la lectura

Packages & Modules:
------------------------

Básicamente los paquetes y módulos, nos ayudan y nos permiten mantener un código mas limpio
reutilizable y funcional. En proyectos robustos suele ser muy útil para mantener todo en
orden y sea mas legible y pueda ser organizado mejor por cualquier persona.


Módulos:
----------

Un modulo tiene como objetivos principales dos cosas:
  • +Reutilización
    +Nombres de variables únicos
Básicamente nos permite reutilizar el código de ese modulo y mantener nuestro entorno
de variables único.
En Python3, existe una palabra reservada que nos permite utilizar un modulo
"import" nos permite utilizar todo el contenido del fichero .py que importamos:

Creamos un fichero llamado "saluda.py" y lo guardamos en el directorio de instalación
de Python3 --esto puede variar dependiendo el sistema operativo y versión de python--
Ej: C:\Python32\

Código: [ Debe registrarse para ver este enlace ]
def saludo(x):
    print("Hola {0}".format(x))

Se guarda en como "saluda.py" y ahora abrimos nuestro IDLE y:

>>> import saluda
>>> saluda.saludo("julianstafari")
Hola julianstafari

Básicamente lo que hacemos en la primera linea es indicar a python que utilizaremos
el modulo saluda --originalmente saluda.py en el directorio de instalación de Python--.
En la segunda linea indicamos el OBJETO, seguido de un "." y la función que utilizaremos
y pasamos el argumento --que en este caso es un string--.

También contamos con otra palabra reservada en Python 3 llamada "from" y básicamente nos
permite importar de una forma mas especifica algo sobre nuestro modulo:

Modificamos nuestro fichero "saluda.py", para quedar:

def saludo(x):
    print("Hola {0}".format(x)

def saludo_mundo():
    print("hola mundo")

Ahora procedemos a nuestro IDLE interactivo y haremos lo siguiente:

>>> from saluda import saludo_mundo
>>> saludo_mundo()
hola mundo

También es posible importar mas cosas de nuestro modulo separando nuestra Clase o Función con ",":

>>> from saluda import saludo, saludo_mundo
>>> saludo("julianstafari")
Hola julianstafari
>>> saludo_mundo()
hola mundo
Si poseemos una serie de objetos dentro de nuestro modulo, con el operador "*" podemos importar
todos los objetos, sin necesidad de especificar todo:

>>> from saluda import *

Al momento de importa un modulo, Python nos brinda al facilidad de importarlo con la referencia
que deseemos:

>>> import saluda as mysaludo
>>> mysaludo.saludo_mundo()
hola mundo

Apartir de nuestra sentencia de importar el modulo y redefinir el nombre de referencia
TODO lo que referencia al objeto sera invocado con la NUEVA REFERENCIA -mysaludo en este caso--


Importación a fondo:
-------------------------

Python 3 permite trabajar de forma estructurada y analógica.
Basicamanete la importación de un modulo en Python3 tiene tres paso:
  • 1.- Path de búsqueda, localización del fichero.
    2.- Generar bytecode.
    3.- Ejecución del código <<modulo importado>>.
También existe una Función dentro del modulo "imp" que nos permite recargar el modulo importado
y esto implica bastante cosas que no pienso explicar --help("reload")--.


Search Path:
--------------

Anteriormente en uno de los ejemplos, creamos un fichero llamado saluda.py e indique
que tenia que guardarse en el path de instalación de Python 3 y fundamentare esto.

Basicamente Python3 necesita saber donde va a buscar nuestro modulo a importar.
Por defecto Python busca en la ruta donde esta siendo ejecutado --por eso la petición
en el ejercicio de guardar en C:\Python32\--
Si nuestros script estuviera guardado en "/home/julianstafari/scripts" y el fichero ".py"
que realiza la importación del modulo estuviera en el mismo lugar NO tendríamos ningún problema.

El otro lugar donde busca Python por el modulo solicitado el momento de importar es definido
por nuestro sistema operativo y es una variable de entorno.
Si solemos trabajar y guardar nuestras cosas en un directorio especifico "/home/julianstafari/scripts"
suponiendo, podríamos agregar la variable de entorno PYTHONPATH en nuestro sistema operativo, he
indicar la ruta -- en este caso "/home/julianstafari/scripts"--.

Y por ultimo Python revisa en los directorios de la librería estándar:

>>> import sys
>>> sys.path
['', 'C:\\Python32\\Lib\\idlelib', 'C:\\Windows\\system32\\python32.zip', 'C:\\Python32\\DLLs', 'C:\

\Python32\\lib', 'C:\\Python32', 'C:\\Python32\\lib\\site-packages']

O podemos hacer esto:

>>> from sys import path
>>> path
['', 'C:\\Python32\\Lib\\idlelib', 'C:\\Windows\\system32\\python32.zip', 'C:\\Python32\\DLLs', 'C:\

\Python32\\lib', 'C:\\Python32', 'C:\\Python32\\lib\\site-packages']

Y ya que "sys.path" no regresa una lista, con un poco de ingenio puede modificarse para agregar o
eliminar directorios.


Packages:
-----------

Los Paquetes en Python, no son mas que un directorio/s que contienen ficheros .py con código Python.
Generalmente los paquetes mantienen una relación de funcionalidad, es decir que en un paquetes
es aconsejable mantener ficheros con código que se complementen o tengan relación en algún sentido.

Vamos a crear un directorio en la misma ubicación donde guardamos anteriormente nuestro script
saluda.py y le pondremos como nombre "test". Y dentro de este directorio crearemos dos ficheros ".py"
"saludo.py" y "despedida.py"


saludo.py:

def di_hola():
    print("Hola")

despedidad.py:

def adios():
    print("Adios")

Y por ultimo creamos un fichero vació llamado "__init__.py".
Ya sea en un fichero ".py" del agrado guardado en el lugar de preferencia o en nuestro
IDLE interactivo vamos a importar nuestro paquete:

>>> from test import saludo, despedida
>>> saludo.di_hola()
Hola
>>> despedida.adios()
Adios

Con respecto al fichero __init__.py, lo veremos mas adelante, solo hay que tener en cuenta
que al momento de querer crear un paquete, es esencial que dentro de nuestro directorio
existe este fichero; su contenido es editable y lo veremos después.


Comentarios:
---------------

Hasta el momento hemos visto y tratado temas referentes a código y esta no sera la excepción.
Los comentarios en Python, a decir verdad, también son un tipo de código, solo que al anteponer
el carácter que indica que la linea o lineas de código son comentarios, NO ejecuta ninguna instrucción
contenida dentro de nuestro/s delimitadores.

El uso de comentarios, lo considero bastante estúpido pero bueno, lo explicare.
Básicamente o esencialmente se utilizan para indicar o comentar nuestro código o su funcionamiento.
Algunos lo consideran buena practica y habito. En lo personal, no me gustan los comentarios
puesto que el código en si habla por si mismo, solo en casos específicos con código bastante complejo
o código incompleto para dar indicaciones.

Existen dos tipos de comentarios, de linea y de mas de una linea.

Linea:

>>> def saludo(): #defino mi funcion
	print("hola") #usamos print y mostramos el string "hola" en pantalla


De varias lineas:


>>> def saludo():
	"""toda la estructura de nuestro
	   comentario de mas de una linea
	   va aquí, sin importar el formato, marginacion de linea o
	   cualquier otra cosa """
	print("hola")


Creo que sobra prolongar este tema.

[ Debe registrarse para ver este enlace ]
@Greydotsec
@julianstafari
 #416065  por ShineW
 13 Jun 2013, 15:35
Muchisimas gracias por seguir con este curso, por su nivel asequible y por las explicaciones dadas.
Un saludo y quedo a la espera de la siguiente entrega.
(si lo haces en fasciculos y lo publicas, al igual los pago y todo... :) )

Lo dicho... gracias por todo
Shine.
 #416127  por KHC
 14 Jun 2013, 04:29
Un gusto que te gusten los textos hermano! No cobro mi trabajo, la información es para todo y me gusta compartir mi conocimiento!