Diciamo che ho un modello di pitone fibo.py definito come di seguito:Python: Importazione Modulo
#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
Nella mia sessione interprete, faccio la seguente:
>> 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'
>>>
Fin qui tutto bene. .restart the interpreter:
>>> 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
>>>
Mi aspettavo l'errore poiché ho importato solo fib e fib2. Ma non capisco perché l'affermazione è stata stampata quando ho importato solo fib e fib2.
In secondo luogo se cambio il modulo come:
#Fibonacci numbers module
print "This is a statement"
print __name__
quello che dovrebbe essere il risultato atteso?
è possibile utilizzare una singola funzione con 'yield b': 1.' for f in fib (n): print f' 2. 'result = list (fib (n))' – jfs