【发布时间】:2011-04-06 00:08:30
【问题描述】:
我必须从可能为 None 的变量中提取值,并考虑一些默认值。我先写了这段代码:
if self.maxTiles is None:
maxX, maxY = 2, 2
else:
maxX, maxY = self.maxTiles
然后我意识到我可以将其缩短为:
maxX, maxY = self.maxTiles if self.maxTiles is not None else (2, 2)
但后来我意识到这可能是最简洁易读的:
maxX, maxY = self.maxTiles or (2, 2)
后者是可以接受的,还是太老套了?
【问题讨论】:
-
最易读的版本是第一个。
-
打代码高尔夫没有赢家。
-
@Andrei,第一个版本在两个分支之间存在令人不快的、任意的、无端的不对称,只需将
if分支的主体变为maxX, maxY = 2, 2即可轻松避免。 -
@Alex:好点子!现在我将其更改为镜像 else 分支,它看起来更具吸引力
标签: python coding-style obfuscation idioms