列表推导式在某些情况下可能很有用,但它们读起来也可能相当糟糕。作为一个稍微夸张的例子,您将如何缩进以下内容?
allUuids = [x.id for x in self.db.query(schema.allPostsUuid).execute(timeout = 20) if x.type == "post" and x.deleted is not False]
原文由 dbr 发布,翻译遵循 CC BY-SA 4.0 许可协议
列表推导式在某些情况下可能很有用,但它们读起来也可能相当糟糕。作为一个稍微夸张的例子,您将如何缩进以下内容?
allUuids = [x.id for x in self.db.query(schema.allPostsUuid).execute(timeout = 20) if x.type == "post" and x.deleted is not False]
原文由 dbr 发布,翻译遵循 CC BY-SA 4.0 许可协议
在我工作的地方,我们的编码指南会让我们做这样的事情:
all_posts_uuid_query = self.db.query(schema.allPostsUuid)
all_posts_uuid_list = all_posts_uuid_query.execute(timeout=20)
all_uuid_list = [
x.id
for x in all_posts_uuid_list
if (
x.type == "post"
and
not x.deleted # <-- if you don't care about NULLs / None
)
]
原文由 guzzloid 发布,翻译遵循 CC BY-SA 2.5 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
这取决于它们有多长。我倾向于像这样构造它们:
这样每个表达式都有自己的行。
如果任何一行变得太大,我喜欢在 lambda 或表达式中将其提取出来:
然后,如果 lambda 变得太长,它就会被提升为一个函数。