Se recomienda leer las partes anteriores:
Enlace
Los módulos son los archivos con extensión .py,.pyo,.pyc.
A diferencia de los módulos principales que son los .py que venimos viendo en estos tutoriales,estos archivos son lineas de ordenes que usan otras lineas de ordenes,osea módulos para scripts,aunque los dos tengan la misma extensión .py.
A lo que en Tiempo de Tux llamamos script otras web's les pueden decir módulos pero en concreto son lineas de ordenes,algo que hace entender a las computadoras lo que queremos hacer.
Así que bueno, en esta ocasión vamos a aprender a usar y crear módulos para usarlos en nuestros script's.
Primero que nada debemos saber que son las funciones y como usarlas,en esta ocasión veremos las funciones muy por encima y en otra ocasión las fortaleceremos con mas conocimiento:
Funciones
Las funciones en python se definen con la llave especial def(Defining) seguida del nombre de la función y los argumentos,estos últimos encerrados en ():
def nombre_f (argumeto1, argumeto2):
Los argumentos son datos que le pasaremos a lo que este adentro de la función,desde el llamado de la función:
Adentro de la función pueden ir muchas cosas,desde print hasta algoritmos muy muy complicados que incluso usan/llaman otras funciones,por ejemplo print
def nombre_funcion (argumeto1, argumeto2):
print (argumeto1)
print (argumeto2)
Llamada de funciones:
Las funciones las llamamos cuando las necesitemos y como dije le pasamos el argumento,los argumentos son parametros que trabajaremos desde la misma función,estos parámetro o argumentos los creamos desde ahi mismo o desviamos una variable ya creada:
nombre_funcion(“Argumento 1”, “Argumeto 2”) # Para llamar las funciones solo basta escribir su nombre
Y también enviar los argumentos (si usamos o necesitamos tales)
Script de ejemplo:
#!/usr/bin/env python3
def nombre_f (argumeto1, argumeto2):
print (argumeto1)
nombre_f(“Argumento 1”, “Argumeto 2”)
Como dije le podemos pasar argumentos, si lo necesitamos,por ejemplo tenemos definidos un nombre y un apellido y queremos imprimirlos desde la función,solo haríamos esto:
#!/usr/bin/env python3
nombre = "Damian"
apellido = "Rivera"
def unir(nombre,apelido):
print ("Me llamo :", nombre, apellido)
unir(nombre,apellido)
También cabe destacar que en la llave def después del nombre de la función podemos asignarle un descriptor(nuevo nombre) a nuestro argumento que deseamos trabajar:
Por ejemplo la variable global se llama "nombre" pero podemos asignarle un descriptor nuevo para poder trabajar con el en la llave def:
#!/usr/bin/env python3
nombre = "Damian" # Variables-
apellido = "Rivera" # Globales
def unir(n,a): # Transformamos las variables a n y a
print ("Me llamo :", n, a) #Aquí ya podemos usar el descriptor
unir(nombre,apellido) # Aquí le pasamos las variables globales
Del mismo modo podemos hacer operaciones aritméticas
Enlace
También podemos llamar funciones desde otras funciones y usar los mismos nombres para las variables locales:
Enlace
Módulos
Los módulos son otros scripts o lineas de ordenes que importamos para poderlos usar en nuestro script principal,primero que nada se tiene que hacer la importación con la llave import seguido del nombre del modulo, por ejemplo:
import os
Los módulos contienen funciones las cuales llamamos con un punto (.),
os.uname() # Aquí estamos llamando la función de os que devuelve nuestro logname
Ya que debajo de os,puede haber uname,getlogin,getcwd,etc como vimos en el script, y para llamarlos solo debemos colocar un (.), también hay que tener en cuenta que aveces la salida del comando no es una simple variable,puede ser una lista o algo mas complejo y se debe manejar como es:
Si es una lista, por ejemplo uname de os:
#!/usr/bin/env python3
import os
sistema = os.uname()
print ("Argumentos en la lista :", sistema[:])
print ("Primer argumento:", sistema[0])
En ese caso estamos importando el modulo os y estamos pidiendo la función uname,la cual devuelve una lista.
Existen muchos módulos para python,no se si se compare con CPAN de Perl pero hay muchos,bien comenzemos:
Los módulos que usen como por ejemplo Gtk o Qt tienen su propia API asi que no les puedo explicar como usarlos ya que es mucha documentación y solamente se usan como uname de os,solo que aun grado mas alto.
Pero vamos a crear nuestros propios modulos,primero que nada vamos a crear una carpeta y dos archivos de texto para el ejemplo:
Como somos Unixeros,o por lo menos yo,abran una consola y metan este pipe:
mkdir mmdulos; cd mmdulos; touch mi_modulo.py && touch mi_script.py; clear; echo "Tenemos `ls | wc -l` archivos: "; ls
(mmdulos es mis módulos :P)
Ahora vamos a crear unas funciones para mi_modulo.py con lo que aprendimos en esta entrada y el enlace de abajo:
Desde la termina puedes usar
Y mete esto:
#!/usr/bin/env python3
def mayus(p1): # Función que convierte a mayúsculas
print (str.upper(p1))
def minus(p1):
print (str.lower(p1)) # Función que convierte en minúsculas
Lo explico,estamos creando dos funciones una que convierte en mayúsculas y otra que convierte en minúsculas las cadenas de texto(es raro porque estas ya pertenecen a una función del sistema,pero es un ejemplo)
Ahora en mi_script.py mete esto:
#!/usr/bin/env python3
import mi_modulo # Llamaos el modulo que creamos
hola = "hola" # Definimos una variable para probar
print ("La funcion mayus convierte:", hola, "en :")
mi_modulo.mayus(hola) # La convertimos :D
Y ejecutamos mi_script.py
Como se dan cuenta si son programadores,ya experimentados no uso return,algo fundamental de una función esto lo hago porque las salidas de las funciones las manejo desde las mismas,no las trabajo desde otro lugar,por ejemplo:
def mayus(p1): # Función que convierte a mayúsculas
print (str.upper(p1))
imprime la cadena por lo cual no es necesario hacer en el script:
print (mi_modulo.mayus(hola))
Porque es un ejemplo,ya que así es como manejo return:
Borramos lo que hemos escrito en los dos archivos:
En la consola
Y metemos en mi_modulo.py :
def mayus(p1): # Función que convierte a mayusculas
return (str.upper(p1)) # Regresa la cadena convertida
Y en mi_script.py:
print ("La funcion mayus convierte:", hola, "en : ")
mi_modulo.mayus(hola)) # No imprime nada
print (mi_modulo.mayus(hola) # Adivinen, si imprime
# De hecho podemos usar su información para trabajarla de otra forma:
cadena = mi_modulo.mayus(hola)
print (cadena.replace("O","I"))
Con la llave return, podemos manejar la salida como un dato y podemos trabajarla,pero no es necesario en todas las funciones si estas tienen su propia salida.
Eso es todo,les dejo un poco mas de documentación(muy buena) de pycartagena:
EnlaceMete esto en mi_modulo.py
Desde la termina puedes usar
gedit mi_modulo.py
Y mete esto:
#!/usr/bin/env python3
def mayus(p1): # Función que convierte a mayúsculas
print (str.upper(p1))
def minus(p1):
print (str.lower(p1)) # Función que convierte en minúsculas
Lo explico,estamos creando dos funciones una que convierte en mayúsculas y otra que convierte en minúsculas las cadenas de texto(es raro porque estas ya pertenecen a una función del sistema,pero es un ejemplo)
Ahora en mi_script.py mete esto:
#!/usr/bin/env python3
import mi_modulo # Llamaos el modulo que creamos
hola = "hola" # Definimos una variable para probar
print ("La funcion mayus convierte:", hola, "en :")
mi_modulo.mayus(hola) # La convertimos :D
Y ejecutamos mi_script.py
Como se dan cuenta si son programadores,ya experimentados no uso return,algo fundamental de una función esto lo hago porque las salidas de las funciones las manejo desde las mismas,no las trabajo desde otro lugar,por ejemplo:
def mayus(p1): # Función que convierte a mayúsculas
print (str.upper(p1))
imprime la cadena por lo cual no es necesario hacer en el script:
print (mi_modulo.mayus(hola))
Porque es un ejemplo,ya que así es como manejo return:
Borramos lo que hemos escrito en los dos archivos:
En la consola
cat /dev/null > mi_modulo.py > mi_script.py
Y metemos en mi_modulo.py :
#!/usr/bin/env python3
return (str.upper(p1)) # Regresa la cadena convertida
def minus(p1):
return (str.lower(p1)) # Funcion que convierte en minusculasY en mi_script.py:
#!/usr/bin/env python3
import mi_modulo
hola = "hola"
mi_modulo.mayus(hola)) # No imprime nada
print (mi_modulo.mayus(hola) # Adivinen, si imprime
# De hecho podemos usar su información para trabajarla de otra forma:
cadena = mi_modulo.mayus(hola)
print (cadena.replace("O","I"))
Con la llave return, podemos manejar la salida como un dato y podemos trabajarla,pero no es necesario en todas las funciones si estas tienen su propia salida.
Eso es todo,les dejo un poco mas de documentación(muy buena) de pycartagena:
Enlace
No hay comentarios.:
Publicar un comentario
Los comentarios serán revisados antes de ser publicados.