Ich lerne jetzt Python, und heute, ich traf ein Problem in http://docs.python.org/release/2.5.4/tut/node8.html
6.1.1 Ausführen von Modulen als Skript
Wenn Sie ein Python-Modul mit
python fibo.py <arguments>
wird der Code des Moduls genauso ausgeführt, wie wenn Sie es importiert hätten, aber mit dem __name__ auf "__main__" gesetzt. Das bedeutet, dass Sie diesen Code am Ende von Ihres Moduls:
if __name__ == "__main__":
import sys`
fib(int(sys.argv[1]))
können Sie die Datei sowohl als Skript als auch als ein importierbares Modul, da der Code der die Befehlszeile analysiert, läuft nur wenn das Modul als die "Haupt"-Datei ausgeführt wird:
$ python fibo.py 50 1 1 2 3 5 8 13 21
34
aber wenn ich das in der Shell mache, bekomme ich
File "<input>", line 1
python fibo.py 222
SyntaxError: invalid syntax
Wie wird das Skript korrekt ausgeführt?
fibo.py ist
def fib(n):
a,b=0,1
while b<n:
print b,
a,b = b,a+b
def fib2(n):
result=[]
a,b=0,1
while b<n:
result.append(b)
a,b=b,a+b
return result
if __name__ =="__main__":
import sys
fib(int(sys.argv[1]))