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.
Twilo
User
Beiträge: 109
Registriert: Mittwoch 10. Januar 2007, 19:17
Wohnort: Berlin
Kontaktdaten:

print gibt zusätzlich "None" zurück

Beitragvon Twilo » Freitag 11. Mai 2007, 20:15

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
EyDu
User
Beiträge: 4866
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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

Beitragvon EyDu » Freitag 11. Mai 2007, 20:20

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.
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Beitragvon mitsuhiko » Freitag 11. Mai 2007, 20:21

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:

Beitragvon Twilo » Freitag 11. Mai 2007, 20:22

Hallo,

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

mfg
Twilo
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Beitragvon Sr4l » Samstag 12. Mai 2007, 17:19

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

Beitragvon stasikz » Donnerstag 5. Juli 2007, 21:53

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

Beitragvon lunar » Donnerstag 5. Juli 2007, 22:03

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...

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], redone