Seite 1 von 1

print gibt zusätzlich "None" zurück

Verfasst: Freitag 11. Mai 2007, 20:15
von Twilo
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

Re: print gibt zusätzlich "None" zurück

Verfasst: Freitag 11. Mai 2007, 20:20
von EyDu
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.

Verfasst: Freitag 11. Mai 2007, 20:21
von mitsuhiko
Nicht print gibt None zurück, deine Funktion tut das.

Verfasst: Freitag 11. Mai 2007, 20:22
von Twilo
Hallo,

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

mfg
Twilo

Verfasst: Samstag 12. Mai 2007, 17:19
von Sr4l
lass die funktion was returnen.
z.B

Code: Alles auswählen

 return "Test"
dann wird "Test ausgegeben.

Verfasst: Donnerstag 5. Juli 2007, 21:53
von stasikz
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

Verfasst: Donnerstag 5. Juli 2007, 22:03
von 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...