Foros del Web » Programando para Internet » Python »

Una duda con import...

Estas en el tema de Una duda con import... en el foro de Python en Foros del Web. Hola! Estoy haciendo pruebas creando mis propios modulos y tal. En ellos, pongo alguna función simple para poder testear. Creo la función suma(a,b) y guardo ...
  #1 (permalink)  
Antiguo 25/05/2014, 04:58
 
Fecha de Ingreso: diciembre-2009
Ubicación: Spain
Mensajes: 180
Antigüedad: 14 años, 4 meses
Puntos: 9
Una duda con import...

Hola!

Estoy haciendo pruebas creando mis propios modulos y tal. En ellos, pongo alguna función simple para poder testear.

Creo la función suma(a,b) y guardo el archivo modulo_suma.py en la carpeta de Python. Pero si hago la llamada al modulo de esta forma:

import modulo_suma

no me reconoce la función.

Debo hacer:

from modulo_suma import suma

Entonces...¿Que sentido tiene el import a secas si no importa nada?

Por que en los modulos standard de Python, con solo poner el import, nos permite utilizar todas las funciones.

Para que nosotros podamos traer todas las funciones hemos de hacer:

from (modulo propio) import *
  #2 (permalink)  
Antiguo 25/05/2014, 06:54
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Una duda con import...

hola, justamente por esto te está fallando:

Código Python:
Ver original
  1. suma(a,b)

así se llama el nombre de la función y vos estás llamando a esa misma función, por eso no te funciona.

Cita:
Debo hacer:

from modulo_suma import suma
cláro, así debés hacer.

Ahora si realmente lo que querés es importar solamente el nombre del módulo, bueno aquí tenés una forma de hacerlo:

Código Python:
Ver original
  1. import modulo_suma
  2.  
  3. print modulo_suma.suma(5,10)
  4.  
  5. raw_input()
  6.  
  7. # Muestra en pantalla 15

Última edición por Principe_Azul; 25/05/2014 a las 07:00
  #3 (permalink)  
Antiguo 25/05/2014, 20:32
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Una duda con import...

Hola a los del hilo

Voy a "ampliar" un poco lo que explica el compa @Principe_Azul:

Código Python:
Ver original
  1. import modulo_suma

Importa todas las funciones del modulo

Código Python:
Ver original
  1. from modulo_suma import suma

Importa solo la funcion suma()

PERO... en cualquier caso, para poder acceder a la funcion debes acceder a su NAMESPACE o sea... el del paquete o modulo y eso lo haces al decir:

Código Python:
Ver original
  1. modulo_suma.suma(parametos)

Otra solucion para escribir menos... si usas mucho suma() seria usar la clausula AS para "alias":

Código Python:
Ver original
  1. import modulo_suma as s
Código Python:
Ver original
  1. from modulo_suma import suma as s

En el primer caso, el modulo_suma ahora se llama 's', .. el segundo caso te toca verlo porque no lo he probado
__________________
Salu2!

Última edición por Italico76; 25/05/2014 a las 20:39
  #4 (permalink)  
Antiguo 26/05/2014, 05:42
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Una duda con import...

Cita:
Otra solucion para escribir menos... si usas mucho suma() seria usar la clausula AS para "alias":


Código Python:
Ver original
  1. import modulo_suma as s
Buen aporte italico, no sabía eso!!! Gracias amigo!!
  #5 (permalink)  
Antiguo 26/05/2014, 12:27
 
Fecha de Ingreso: diciembre-2009
Ubicación: Spain
Mensajes: 180
Antigüedad: 14 años, 4 meses
Puntos: 9
Respuesta: Una duda con import...

Gracias...

Bueno, si usamos el:

Código Python:
Ver original
  1. from modulo import *

Se importan todas las funciones y no hace falta poner:

Código Python:
Ver original
  1. modulo.funcion()

Solamente
Código Python:
Ver original
  1. funcion()
  #6 (permalink)  
Antiguo 26/05/2014, 12:49
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Una duda con import...

Cita:
Iniciado por Koan Ver Mensaje
Gracias...

Bueno, si usamos el:

Código Python:
Ver original
  1. from modulo import *

Se importan todas las funciones y no hace falta poner:

Código Python:
Ver original
  1. modulo.funcion()

Solamente
Código Python:
Ver original
  1. funcion()
Con razon nunca vi la forma:

Cita:
from modulo import suma as alias
y solo:

Cita:
import modulo as alias
Para que si mete todo al espacio de nombres actual ?

__________________
Salu2!
  #7 (permalink)  
Antiguo 26/05/2014, 14:52
 
Fecha de Ingreso: febrero-2011
Mensajes: 54
Antigüedad: 13 años, 2 meses
Puntos: 18
Respuesta: Una duda con import...

Unos apuntes:
La forma from modulo import * es poco recomendable, porqué no se conoce la procedencia de ls funciones importadas.

Y una forma más para complementar las aportaciones de Italico y principe.
Esto :
Código Python:
Ver original
  1. VAR = __import__('modulo')
Asigna a una variable un módulo importado como string.

ej:
Código Python:
Ver original
  1. VAR = __import__('math')
  2. x = VAR.sqrt(25)
  3. print x

Saludos.
  #8 (permalink)  
Antiguo 27/05/2014, 09:47
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Una duda con import...

Cita:
Iniciado por sukoy Ver Mensaje
Unos apuntes:
La forma from modulo import * es poco recomendable, porqué no se conoce la procedencia de ls funciones importadas.

Y una forma más para complementar las aportaciones de Italico y principe.
Esto :
Código Python:
Ver original
  1. VAR = __import__('modulo')
Asigna a una variable un módulo importado como string.

ej:
Código Python:
Ver original
  1. VAR = __import__('math')
  2. x = VAR.sqrt(25)
  3. print x

Saludos.
Hola, que significa ese x = VAR.sqrt(25)
Gracias.
  #9 (permalink)  
Antiguo 27/05/2014, 09:58
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: Una duda con import...

Cita:
Iniciado por Principe_Azul Ver Mensaje
Hola, que significa ese x = VAR.sqrt(25)
Gracias.
Asigna a una variable un módulo importado como string.
  #10 (permalink)  
Antiguo 27/05/2014, 09:58
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Una duda con import...

@Principe_Azul :

VAR es un nombre cualquiera que le pone a la variable donde se guarda "la referencia" (puntero) al namespace para luego poder acceder a ella como si fuese un "alias":

Código Python:
Ver original
  1. modulo = __import__('math')
  2. x = modulo.sqrt(25)
  3. print x

Creeria que quizas podria ser util porque es una funcion y puede recibir un parametro del tipo variable:

Código Python:
Ver original
  1. modulo_name = 'math'
  2. modulo = __import__(modulo_name)
  3.  
  4. x = modulo.sqrt(25)
  5. print x
__________________
Salu2!
  #11 (permalink)  
Antiguo 27/05/2014, 13:28
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Una duda con import...

Hola, gracias a los dos!!
Pero mi duda es sobre esta función: sqrt(25) y ese número 25 tampoco se que es, no se que significa eso, lo demás lo entiendo.

Gracias nuevamente.
  #12 (permalink)  
Antiguo 27/05/2014, 13:42
 
Fecha de Ingreso: diciembre-2009
Ubicación: Spain
Mensajes: 180
Antigüedad: 14 años, 4 meses
Puntos: 9
Respuesta: Una duda con import...

Es un ejemplo que te han puesto de una función incluida en el módulo math.

Código Python:
Ver original
  1. math.sqrt(25)

...te devuelve el cuadrado de un número. Osea, su raíz cuadrada. En ese caso: 5.0
  #13 (permalink)  
Antiguo 27/05/2014, 14:42
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Una duda con import...

Ah bien entiendo, el .sqrt() es una función para sacar raíces cuadradas y el 25 es el valor!!!

Etiquetas: Ninguno
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 09:41.