在 python 解释器中,我输入以下代码:
params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secre
t"}
print "&".join("%s_%s" % (i,y) for i,y in params.items())
而且,可以理解,我得到以下输出:
pwd_secret&database_master&uid_sa&server_mpilgrim
但是当我运行下面的代码时:
for i,y in params.items():
print "&".join("%s_%s" % (i,y))
我得到了这个奇怪的输出:
p&w&d&_&s&e&c&r&e&t
d&a&t&a&b&a&s&e&_&m&a&s&t&e&r
u&i&d&_&s&a
s&e&r&v&e&r&_&m&p&i&l&g&r&i&m
两个代码块似乎做同样的事情。为什么输出不同?
请您参考如下方法:
str.join 作用于序列。在第一段代码中,它处理一系列字符串,而在第二段代码中,它在每个循环中只处理一个字符串。字符串本身就是(字符的)序列,所以...
>>> " ".join(["Hello", "world!"])
'Hello world!'
>>> " ".join("Hello world!")
'H e l l o w o r l d !'
