[]问题请教

[]问题请教

>>> params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"}
>>> params.items()
[('pwd', 'secret'), ('database', 'master'), ('uid', 'sa'), ('server', 'mpilgrim')]


>>> [k for k,v in params.items()]   //不明白为什么要用[.....]把他们包起来
['pwd', 'database', 'uid', 'server']

>>> k for k,v in params.items()     //这个我测试
Traceback (  File "<interactive input>", line 1
    k for k,v in params.items()
        ^
SyntaxError: invalid syntax
>>> (k for k,v in params.items())   //我换成了(.......)
<generator object at 0x00F22878>
>>> (k for k,v in params.items())
<generator object at 0x00F224B8> //输出这个了不知道这是什么意思


不明白 [k for k,v in params.items()] 为什么 要 用 [...]

请高手指点下,谢谢.....
单纯的for语句前面不能有东西,因此直接的 k for k,v in params.items() 就是错的。而

[k for k,v in params.items()]

这个是python中的一种叫list comprehension的表达式语句,它可以通过循环生成一个新的list,上面的代码相当于:

[Copy to clipboard] [ - ]
CODE:
s = []
for k, v in params.items():
    s.append(k)

而(k for k,v in params.items())则又是另一种叫generator expression的语法,详情可以参阅python语法手册5.2.5 Generator expressions。而一个generator其实是一个可以多次调用的函数,具体的内容还是建议找些文章或教程学一下。