Eine Freundin von mir macht einen Python-Tutorial-Kurs und bat um Hilfe, weil ihr Code nicht wie erwartet funktionierte.
Ich konnte das Problem sofort identifizieren und ihr helfen, das Problem für sich selbst abzuleiten. Der Code war in diese Richtung.
myValue = 575.0
print=(myValue)
Offensichtlich ist der Druck fehlgeschlagen. Aber wenn ich sage, dass es fehlgeschlagen ist, meine ich nur, dass es nichts gedruckt hat. Der Interpreter hat diese Zeile weiterhin ohne Probleme ausgeführt. Meine Frage ist also, warum der Zuweisungsoperator keinen Syntaxfehler auslöst.
Es wird kein Fehler ausgegeben, da es sich in Python 3 print
um eine reguläre Funktion handelt. Und Funktionsobjekte sind an Namen gebunden, ebenso print
ein Name (eine "Variable"), der sich auf ein bestimmtes Funktionsobjekt bezieht.
Da sich Funktionen nicht von Variablen unterscheiden, können Sie sie nach Belieben neu zuweisen:
def add(a, b):
return a + b
add = "ha-ha, I'm a string"
Die Klammern nach dem =
Zeichen sind die Art von Klammern, die Sie in der Mathematik verwenden:
print = (1 + 2) # print == 3
Klammern unmittelbar nach einem Namen stehen für einen Funktionsaufruf.
Aber jetzt print
ist es kaputt und Sie werden nie mehr etwas drucken können! Nicht wirklich - es gibt eine Kopie in __builtins__.print
:
print = __builtins__.print
Sie können dies jedoch genauso leicht durcheinander bringen:
__builtins__.print = 5
In Python 2 handelt es sich jedoch print
um eine Anweisung, nicht um eine reguläre Funktion. Daher schlägt dies fehl:
Python 2.7.16 (default, Dec 3 2019, 07:02:07)
>>> print = 5
File "<stdin>", line 1
print = 5
^
SyntaxError: invalid syntax
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen