curso python basico
Módulos en python
Un modulo es un archivo que contiene variables, funciones, clases, objetos e incluso programas principales, que permiten organizar el código de un programa de una manera más inteligible.
- Ejemplo: En un archivo llamado new_func.py, está la siguiente definición de función
def Multi( arg1=0, arg2=0 , *vartuple ): "Multiplica todos los argumentos" produc=arg1*arg2 for var in vartuple: produc=produc*var return produc
La palabra reservada import
Se puede usar cualquier código hecho en python como módulo, haciendo un import desde otro código, script o programa en pyton. esto es import modulo.Cuando el interprete se encuentra la palabra import, importa dicho modulo o módulos desde los directorios de búsqueda por defecto.
- Ejemplo: Si se tiene el archivo func.py donde está definida la función Multi, esta se puede importar desde otro script, para ser usada
# Se importa el modulo new_func import new_func # Ahora se puede usar el código dentro de ese módulo en el nuevo programa new_func.Multi(2,3,4,5,6)
La palabra reservada from...import
Esta expresión es usada cuando de determinado módulo solo se necesita algunas de los elementos que contiene.- Ejemplo: En el módulo new_func está la función fibo, dicha función recibe un entero n, y entrega una lista con los números de la serie de Fibonacci menores que n. Se quiere hacer un programa que sume los números Fibonacci menores que el número 100. Ahora new_func.py luce así:
def Multi( arg1=0, arg2=0 , *vartuple ): "Multiplica todos los argumentos" produc=arg1*arg2 for var in vartuple: produc=produc*var return produc def fib(n): "Recibe un entero n, y entrega una lista con los números de fibonacci menores que n" result = [] a, b = 0, 1 while b < n: result.append(b) a, b = b, a+b return result
y el script que resuelve el problema esfrom new_func import fib #Se importa la función fib desde el modulo new_func serie=fib(100) #La variable serie se llena con la serie de fibonacci hasta antes de 100 sum=0 for i in a: sum=sum+i print('la suma de los números de Fibonacci menores que 100 es:',sum)
Hay que notar que al usar "from...import" no se importa ningún otro item (objeto, variable, función...) desde el módulo new_func, y también hay que tener en cuenta que la función "fibo" se llama directamente y no por medio del operador "."(punto).
La palabra reservada from...import*
Otro uso de "from...import" es el de importar todos los elementos de determinado módulo. Si se usa de esta manera, todos los elementos del módulo se van a cargar al programa y se podrán llamar directamente.- Ejemplo: El archivo new_func.py
def Multi( arg1=0, arg2=0 , *vartuple ): "Multiplica todos los argumentos" produc=arg1*arg2 for var in vartuple: produc=produc*var return produc def fib(n): "Recibe un entero n, y entrega una lista con los números de fibonacci menores que n" result = [] a, b = 0, 1 while b < n: result.append(b) a, b = b, a+b return result def SumLis(list): sum=0 for i in list: sum=sum + i return sum
Y el código que resuelve el problema del ejemplo anterior es:#Importo el módulo from new_func import * a=fib(100) #Se le asigna a "a" una lista con los números de fibonacci menores que 100. b=SumLis(a) #Uso la función SumLis para sumar las componentes de la lista a, y se las asigno a b print("La suma es:" , b)
Ejecutar módulos como un script
Si un código se ejecuta como un modulo, el nombre de este está disponible en la variable global __name__ . Pero si este se ejecuta directamente entonces ésta variable tendrá el valor __name__ = "__main__" . Así si se quiere que el módulo ejecute algunas acciones al ser llamado como script, entonces se ponen dichas acciones después de un condicional.
- Ejemplo: Anexamos algunas lineas a new_func.py para que al ser llamado como programa, ejecute unas acciones mas.
def Multi( arg1=0, arg2=0 , *vartuple ): "Multiplica todos los argumentos" produc=arg1*arg2 for var in vartuple: produc=produc*var return produc def fib(n): "Recibe un entero n, y entrega una lista con los números de fibonacci menores que n" result = [] a, b = 0, 1 while b < n: result.append(b) a, b = b, a+b return result def SumLis(list): sum=0 for i in list: sum=sum + i return sum if __name__ == "__main__": a=fib(200) print('Serie de Fibonacci hasta el termino exactamente menor que 200: ',a) b=SumLis(a) print('Suma de los términos de esta serie: ',b)
La variable PYTHONPATH
PYTHONPATH variable de ambiente, que consiste de una lista de directorios, que es donde python busca los modulos que se le piden importar.El PYTHONPATH para Windows:
set PYTHONPATH=c:\python34\lib;
Y PYTHONPATH para UNIX:
set PYTHONPATH=/usr/local/lib/python