Eine Frage in Bezug auf die Variable in einer for-Schleife initialisiert:Funktion der initialisierten Variable in der For-Schleife zuweisen?
Das Setup:
from urllib import urlopen
WORD_URL = "http://learncodethehardway.org/words.txt"
WORDS = []
Meine Frage ist, wenn die Worte aus der URL in die leere Liste WORTE Laden auf, warum funktionierts:
for word in urlopen(WORD_URL):
WORDS.append(word.strip())
Während dies nicht?
for word.strip() in urlopen(WORD_URL):
WORDS.append(word)
Per mein Verständnis kann eine Funktion auf der initialisierte Variable in einer for-Schleife bezeichnet werden, solange die Art der variablen unterstützt diese Funktion.
In diesem Fall ist der Typ der initialisierten Variablen ein String mit einem Newline am Ende, also würde ich denken, dass word.strip() funktionieren würde. Stattdessen erhalte ich den folgenden Fehler:
File "<stdin>", line 1
SyntaxError: can't assign to function call
Warum ist das?
Zuweisung (einschließlich in 'für' Anweisungen) funktioniert nicht so - Sie vergeben Werte für * Namen *, nicht für * Ausdrücke *. Gedankenexperiment: Wenn das funktionierte, was würde "für" ein tatsächliches String-Literal ".strip() in urlopen (WORD_URL) bedeuten:' tun? –
Entschuldigung, ich verstehe nicht. –
Wie ich verstehe, ist Wort ein Name; d. h. eine Variable, die im Vorlauf in der for-Schleife erzeugt wird. Wenn strip() in einem Bereich für ein Wort aufgerufen werden kann, warum nicht in einem anderen? Außerdem habe ich Ihren Code durch den Interpreter laufen lassen und es gab den gleichen Fehler wie oben - nicht wirklich verstanden - danke für Ihre Geduld im Voraus - aber könnten Sie bitte mit mehr Codebeispielen arbeiten? –