Lets sagen, dass ich ein Python-Modell fibo.py wie unten definiert haben:Python: Import-Modul
#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
In meinem Dolmetscher Sitzung, ich folgendes:
>> 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'
>>>
So weit so gut. .Restart der 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
>>>
Ich erwartete den Fehler, da ich nur fib und fib2 importiert habe. Aber ich verstehe nicht, warum die Aussage gedruckt wurde, als ich nur fib und fib2 importierte.
Zweitens, wenn ich das Modul wie ändern:
#Fibonacci numbers module
print "This is a statement"
print __name__
Was soll das erwartete Ergebnis sein?
Sie könnten eine einzige Funktion mit 'yield b' verwenden: 1.' für f in fib (n): Ausdruck f' 2. 'Ergebnis = Liste (fib (n))' – jfs