2010-10-17 20 views
12

Es ist mein Tag 1 des Lernens Python. Das ist für viele von euch eine Frage ohne Frage. Siehe den folgenden Code:Zusätzliche Ausgabe keine beim Drucken eines Befehlszeilenarguments

#!/usr/bin/env python 

import sys 

def hello(name): 
    name = name + '!!!!' 
    print 'hello', name 

def main(): 
    print hello(sys.argv[1]) 


if __name__ == '__main__': 
    main() 

wenn ich laufe es

$ ./Python-1.py alice 
hello alice!!!! 
None 

Jetzt habe ich nicht verstehen, wo diese "None" kam?

Antwort

21

Zählen Sie die Anzahl der print Anweisungen in Ihrem Code. Sie werden sehen, dass Sie "hello alice!!!" in der hello-Funktion drucken, und Drucken des Ergebnisses der hello-Funktion. Da die hello-Funktion keinen Wert zurückgibt (was Sie mit der return-Anweisung tun würden), wird das Objekt None zurückgegeben. Ihre print innerhalb der main Funktion endet Drucken None.

+0

Vielen Dank für super schnelle Antwort und detaillierte Erklärung. Ich habe verstanden, was du gesagt hast. – CuriousMind

4

Ihre

def main(): 
    print hello(sys.argv[1]) 

zu

ändern
def main(): 
    hello(sys.argv[1]) 

Sie explizit den Rückgabewert von Ihrem hallo Verfahren drucken. Da Sie keinen Rückgabewert angegeben haben, gibt er None zurück, was in der Ausgabe angezeigt wird.

+0

Vielen Dank! – CuriousMind

Verwandte Themen