Unerwartete Leerzeichen

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.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@BlackJack:
Wenn ich Dich richtig verstehe, erfolgt die Parameterübergabe an eine Anweisung anders als an eine Funktion. Die Funktion

Code: Alles auswählen

print (1,2,3)
erhält ein Tuple. In welcher Form werden die 1, die 2 und die 3 von print (oder einer anderen Anweisung) entgegengenommen?

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Benutzeravatar
snafu
User
Beiträge: 6908
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ich glaube, man sollte hier "Sinn machen" eher in "magisch" ändern. Und hier könnte das ``print``-Statement manch einem durchaus etwas zu magisch und unflexibel vorkommen. Ich sage mal, das Statement holt im Sinne der "Convenience" (Zweckmäßigkeit) noch das Beste raus, was man aus einer "Nicht-Funktion" herausholen kann. Es hat aber auch sicher nicht geschadet, es in eine Funktion zu ändern. Andererseits könnten jetzt manche Leute von den Klammern genervt sein. Schön wäre vielleicht auch ein Mittelweg gewesen, wo man die ``print()``-Funktion unter einem anderen Namen eingeführt hätte und die Verwendung von ``print`` als Statement einfach die Funktion mit ihren Default-Werten aufgerufen hätte. Naja, aber klugscheissen kann man am Ende immer. Andere Leute hätten vielleicht auch *das* wieder "too much" gefunden.
Benutzeravatar
snafu
User
Beiträge: 6908
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@mutella:

Statements gehören zum fest in den Interpreter eingebauten Befehlssatz. Da gibt es so gesehen kein festes Muster. Man kann nicht sagen, dass die Syntax von ``print``, ``try...except``, ``with`` usw grundsätzlich die selbe ist.
mutetella hat geschrieben:Ich weiß nicht, in welche Richtung diese Diskussion gehen würde, wenn sich der Entwickler von 'print' dafür entschieden hätte, zwischen einzelne Elemente kein Leerzeichen einzufügen.
Das hätte man wahrscheinlich für relativ unnötig gehalten, da dies bereit mittels ``print value1 + value2`` oder eben ``print ''.join(values)`` erledigt werden kann. Ich verstehe erhlich gesagt nicht, wie man sich dermaen daran aufhängen kann. Es ist ja nicht so, dass ``print`` als Statement total willkürlich handlen würde. Es ist einfach nur eine ungewöhnliche Syntax. Zu viel "Eigendynamik" herrscht da keineswegs.
BlackJack

@mutella: An die ``print``-Anweisung wird gar nichts übergeben -- es ist keine Funktion. CPython erzeugt da direkt entsprechenden Bytecode draus:

Code: Alles auswählen

In [320]: def f():
   .....:     print 1, 2, 3
   .....:     print_(1, 2, 3)
   .....: 

In [321]: dis.dis(f)
  2           0 LOAD_CONST               1 (1)
              3 PRINT_ITEM          
              4 LOAD_CONST               2 (2)
              7 PRINT_ITEM          
              8 LOAD_CONST               3 (3)
             11 PRINT_ITEM          
             12 PRINT_NEWLINE       

  3          13 LOAD_GLOBAL              0 (print_)
             16 LOAD_CONST               1 (1)
             19 LOAD_CONST               2 (2)
             22 LOAD_CONST               3 (3)
             25 CALL_FUNCTION            3
             28 POP_TOP             
             29 LOAD_CONST               0 (None)
             32 RETURN_VALUE
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

snafu hat geschrieben:Ich verstehe erhlich gesagt nicht, wie man sich dermaen daran aufhängen kann.
Nun ja, wenn Dein Erfahrungsschatz so mickrig wäre wie der meinige, könntest Du mich vielleicht verstehen. Mein 'herumreiten' auf Dingen, die für Dich kaum noch einen Gedanken Wert sind, ist dem geschuldet, dass ich eben diese Dinge soweit als mir möglich verstehen will. Und nachdem ich über keinerlei Informatik-Ausbildung oder ähnlichen background verfüge, grottenschlecht in Englisch und Mathematik bin, braucht es einfach immer etwas länger, bis bei mir etwas 'durch' ist... :)

Und gerade solch' vermeintlich unwichtigen Dinge wie die Arbeitsweise von 'print' finde ich hochinteressant... :wink:

@BlackJack:
Das dis-Modul ist ja 'ne coole Sache! Damit werd' ich wieder eine ganze Weile meine Freude haben...
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Antworten