print gibt zusätzlich "None" zurück

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Twilo
User
Beiträge: 109
Registriert: Mittwoch 10. Januar 2007, 19:17
Wohnort: Berlin
Kontaktdaten:

Hallo,

kann mir einer erklären, warum print zusätzlich ein "None" zurückgibt?

Code: Alles auswählen

class test(object):
  def _test1(self):
    print 1

test1 = test()
print test1._test1()

Code: Alles auswählen

C:\Documents and Settings\xxx\My Documents\python>python test.py
1
None

C:\Documents and Settings\xxx\My Documents\python>
mfg
Twilo
[url=http://www.farb-tabelle.de/][b]Farbtabelle[/b][/url]
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Weil Funktionen die nicht explizit einen Wert zurückgeben, immer None liefern.

Und zusätzlich ist da auch nichts, mit "print" gibst du lediglich etwas aus.
Zuletzt geändert von EyDu am Freitag 11. Mai 2007, 20:21, insgesamt 1-mal geändert.
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Nicht print gibt None zurück, deine Funktion tut das.
TUFKAB – the user formerly known as blackbird
Twilo
User
Beiträge: 109
Registriert: Mittwoch 10. Januar 2007, 19:17
Wohnort: Berlin
Kontaktdaten:

Hallo,

ok, da hätte ich auch selber drauf kommen können :?

mfg
Twilo
[url=http://www.farb-tabelle.de/][b]Farbtabelle[/b][/url]
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

lass die funktion was returnen.
z.B

Code: Alles auswählen

 return "Test"
dann wird "Test ausgegeben.
Benutzeravatar
stasikz
User
Beiträge: 18
Registriert: Donnerstag 5. Juli 2007, 21:34

Hallo, eine frage zum gleichen "Problem":

Code: Alles auswählen

class bruch:
    def __init__(self, z=1, n=1):
        self.zaehler = z 
        self.nenner = n
        
    def zeigen(self):
        print '%d/%d' % (self.zaehler,self.nenner)

b1 = bruch(2,4)
print "b1 = ", b1.zeigen()
rufe ich dieses Proramm auf, bekomme ich folgendes als Ausgabe:

Code: Alles auswählen

b1 = 2/4
None
Mir ist schon klar, dass eine Funktion die keinen Rückgabewert besitzt, bei der print Anweisung None zurückgibt, lasse ich meine "zeigen"-methode dann irgendwas returnen, z.b return 1, dann kommt das als ergebnis:

Code: Alles auswählen

b1 = 2/4
1
ich würde es aber gerne nur so ausgeben lassen:

Code: Alles auswählen

b1 = 2/4
Kann mir vielleicht einer ein Tipp geben, wie ich das am elegantesten lösen kann :D
lunar

print ist ein Statement, keine Funktion. Print gibt nichts zurück. Versuch doch mal ein:

Code: Alles auswählen

foo = print 'bar'

Dein "Problem" kannst du am elegantesten lösen, indem du in zeigen print durch return ersetzt. Das wirkt Wunder...
Antworten