def strange_syntax(stuff):
return ".".join(item for item in stuff)
如何(以及为什么)运行这段代码?这里发生了什么?通常我不能使用这种语法。此外,如果该语法不在某些函数 中作为参数,则该语法不存在。
我知道,我也可以这样做:
def normal_syntax(stuff):
return ".".join(stuff)
最佳答案
这叫做 generator expression .
它的工作方式就像列表推导式(但会惰性地评估迭代对象而不是从它们构建新列表),但是您使用圆括号而不是方括号来创建它们。您可以在只有一个参数的函数调用中去掉括号。
在您的特定情况下,不需要生成器表达式(如您所述)- (item for item in stuff)
给出与 stuff
相同的结果。当对诸如 (item.strip() for item in stuff)
(map) 或 (item for item in stuff if item.isdigit()) 这样的项目进行操作时,这些表达式开始变得有意义
(过滤器)等
关于python - 作为函数参数的一行 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48205442/