Python 2.7 将函数赋值给For循环中的初始化变量?

Python 2.7 将函数赋值给For循环中的初始化变量?,python-2.7,for-loop,Python 2.7,For Loop,关于在for循环中初始化的变量的问题: 设置: from urllib import urlopen WORD_URL = "http://learncodethehardway.org/words.txt" WORDS = [] 我的问题是,当从url将单词加载到空列表单词中时,为什么会这样做: for word in urlopen(WORD_URL): WORDS.append(word.strip()) 而这不是吗 for word.strip() in urlopen(

关于在for循环中初始化的变量的问题:

设置:

from urllib import urlopen

WORD_URL = "http://learncodethehardway.org/words.txt"

WORDS = []
我的问题是,当从url将单词加载到空列表单词中时,为什么会这样做:

for word in urlopen(WORD_URL):
    WORDS.append(word.strip())
而这不是吗

for word.strip() in urlopen(WORD_URL):
    WORDS.append(word)
根据我的理解,可以在for循环中对初始化变量调用函数,只要所述变量的类型支持该函数

在本例中,初始化变量的类型是一个字符串,末尾有一个换行符,因此我认为
word.strip()
可以工作。相反,我得到了以下错误:

File "<stdin>", line 1
SyntaxError: can't assign to function call
文件“”,第1行
SyntaxError:无法分配给函数调用

为什么会这样

我现在明白了;我试图做的事情没有起作用,因为:

for word in urlopen(WORD_URL):
是一个设计用于迭代某个对象的表达式,因此对新生成的变量word调用strip()方法在此时没有意义

显而易见的答案是在for循环块内部的变量词上调用strip()方法


@零比雷埃夫斯感谢您的耐心。

赋值(包括
for
语句中的赋值)不是这样工作的-您将值赋值给名称,而不是表达式。思维实验:如果这起作用,urlopen(WORD\u URL)中的“实际字符串文字”.strip()的
会是什么?
会是什么?对不起,我不明白。据我所知,WORD是一个名称;i、 例如,在for循环中动态创建的变量。如果strip()可以在一个区域中对word调用,为什么不能在另一个区域中调用呢?另外,我通过解释器运行了您的代码,它给出了与上面相同的错误——不太理解——提前感谢您的耐心——但请您用更多的代码示例详细说明一下好吗?关键是
for
循环是(重复的)赋值,您只能赋值给名称
word.strip()
是一个表达式,它恰好包含一个名称(两个,实际上-
strip
也是一个名称)。关键是,你不能做你想做的事情的原因是它没有任何意义。对于某些列表中的len(word)如何
或者对于某些列表中的a+b如何
-Python如何知道您真正想要分配给哪个名称,以及表达式的其余部分如何与之相关?这为我澄清了这一点;我理解。