Digamos que tengo un modelo pitón fibo.py definido de la siguiente manera:Python: La importación de módulo
#Fibonacci numbers module
print "This is a statement"
def fib(n):
a,b = 0,1
while b < n:
print b
a, b = b, a+b
def fib2(n):
a,b = 0,1
result= []
while(b < n):
result.append(b)
a, b = b, a+b
return result
En mi sesión intérprete, hago lo siguiente:
>> import fibo
This is a statement
>>> fibo.fib(10)
1
1
2
3
5
8
>>> fibo.fib2(10)
[1, 1, 2, 3, 5, 8]
>>> fibo.__name__
'fibo'
>>>
Hasta aquí todo bien. .restart el intérprete:
>>> from fibo import fib,fib2
This is a statement
>>> fibo.__name__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'fibo' is not defined
>>>
esperaba el error ya que solo he importado fib y fib2. Pero no entiendo por qué la declaración se imprimió cuando solo importé fib y fib2.
En segundo lugar si cambio el módulo como:
#Fibonacci numbers module
print "This is a statement"
print __name__
cuál debería ser el resultado esperado?
puede usar una sola función con 'yield b': 1.' para f en fib (n): imprimir f' 2. 'result = list (fib (n))' – jfs