Foros del Web » Programando para Internet » Python »

Separar funciones en arhivos.py

Estas en el tema de Separar funciones en arhivos.py en el foro de Python en Foros del Web. Una consulta, tengo un archivo.py con mas de 500 linias y unes 10 funciones. Para simplificar y en un futuro añadir mas funciones, lo que ...
  #1 (permalink)  
Antiguo 24/03/2011, 04:52
 
Fecha de Ingreso: febrero-2011
Ubicación: Tarragona, España
Mensajes: 51
Antigüedad: 13 años, 2 meses
Puntos: 0
Separar funciones en arhivos.py

Una consulta, tengo un archivo.py con mas de 500 linias y unes 10 funciones. Para simplificar y en un futuro añadir mas funciones, lo que quiero es separarlo por archivos. Es decir como puedo hacer para tener un archivo principal con solo el menu, y luego cada funcion meterla en un archivo diferente y complilar-lo todo. Para que me entiendas en Java seria como un archivo padre con todos los nombres de las funciones y luejo los hijos las diferentes funciones.
Se puede hacer esto en python? o mes estoy liando mucho...

gracias de antemano!!! saludossss
  #2 (permalink)  
Antiguo 24/03/2011, 14:12
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Separar funciones en arhivos.py

Claro que puedes hacer eso de hecho eso se llama módulos y paquetes.
  #3 (permalink)  
Antiguo 31/03/2011, 06:04
 
Fecha de Ingreso: febrero-2011
Ubicación: Tarragona, España
Mensajes: 51
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Separar funciones en arhivos.py

Bien he estado optimizando mi codigo y hacerlo mas leible separandolo en funciones i en modulos, pero me urge un problema.
Explico: en el programa principal, estoy utilizando una variable y dicha variable luego la necessito utilizar en una funcion, que esta en otro archivo.py como puedo hacer para que esta variable sea publica y poder ser utilizada en los distintos archivos.py???

Gracias de antemano!!!!
  #4 (permalink)  
Antiguo 31/03/2011, 08:11
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Separar funciones en arhivos.py

Probablemente algo esta terriblemente mal en tu diseño, ya que variables globales son una muy mala practica. En vez de eso, ¿por que no mejor le pasas ese valor como un parámetro de la función?
  #5 (permalink)  
Antiguo 03/04/2011, 13:09
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Separar funciones en arhivos.py

Definitivamente es mejor que se la pases como parámetro a la función, pero en cualquier caso podés tener variables globales al estilo de las variables estáticas de java simplemente usando un módulo e importándolo en tantos sitios como lo necesites. Por ejemplo, si tuvieras un archivo vacío de nombre a.py y luego dos módulos b.py y c.py, podés hacer esto:

en b.py

import a
a.hola = "Hola";

en c.py

import a

print a.hola

esto por supuesto depende de que b se ejecute antes que c


Saludos.
  #6 (permalink)  
Antiguo 05/04/2011, 04:06
 
Fecha de Ingreso: febrero-2011
Ubicación: Tarragona, España
Mensajes: 51
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Separar funciones en arhivos.py

UooooUoooo, perfecto!!!! ya he podido separar todo mi codigo, estructurarlo bien y como me ha comentado razpeitia he revisado mi diseño!!
Tengo el programa principal, con sus diferentes funciones en diferentes archivos.py
El inconveninete que tengo, es que esto solo lo puedo ejecutar en un pc donde este instalado el python, se puede hacer un executable... vamos lo que equivale a java a un .jar
Para poder ejecutarlo en ordenadores sin python instalado.

Gracias, sin vuestra ayuda no seria posible programar con python!! ;)))
  #7 (permalink)  
Antiguo 05/04/2011, 08:01
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Separar funciones en arhivos.py

Claro que si existe py2exe para que puedas hacer tu programa un ejecutable.
  #8 (permalink)  
Antiguo 05/04/2011, 13:54
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Separar funciones en arhivos.py

Nota: para ejecutar un JAR necesitas tener Java instalado (JRE)

Me pareció un detalle importante a comentar.
  #9 (permalink)  
Antiguo 06/04/2011, 08:45
 
Fecha de Ingreso: febrero-2011
Ubicación: Tarragona, España
Mensajes: 51
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Separar funciones en arhivos.py

Buen apunte AlvaroG
Bien he seguido todos los pasos del py2exe, y tengo una duda donde pone scripts, que le pongo solo el script del archivo principal o todos los scripts de las funciones tambien???

Código Python:
Ver original
  1. from distutils.core import setup
  2. import py2exe
  3. setup(name="Crawler",
  4.  version="1",
  5.  author="Ricard",  
  6.  scripts=["program.py"],
  7.  console=["program.py"],
  8.  options={"py2exe": {"bundle_files": 1}},
  9.  zipfile=None
  10. )

Asi lo tengo, y cuando lo ejecuto me salta un error tipico de windows ha detectado un problema y debe cerrarse.... Enviar informes No enviar....
Alguien sabe si estoy haciendo algo mal? o es el magnifico S.O de windows??
  #10 (permalink)  
Antiguo 06/04/2011, 12:32
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Separar funciones en arhivos.py

A mi me funciono perfecto:
Código Python:
Ver original
  1. from distutils.core import setup
  2. import py2exe, sys, os
  3.  
  4. sys.argv.append('py2exe')
  5.  
  6. setup(
  7.         name = "Crawler",
  8.         version="1",
  9.         author = "Ricard",  
  10.         options = {'py2exe': {'bundle_files': 1}},
  11.         console = [{'script': "program.py"}],
  12.         zipfile = None,
  13.       )

Etiquetas: funciones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:27.