根据PEP8文档,我无法找到任何关于我是否应该在代码上使用pass
的美学原因的参考。根据下面的示例,我应该保留else
还是可以删除它们?到目前为止,我保留它的主要原因是基于“明确比隐含更好”的口头禅。
if fields:
for i in foo:
if i == 'something':
print "something"
else:
pass
else:
pass
答案 0 :(得分:12)
是的,您可以/应该删除它们,因为它们什么都不做。
Python社区教导"显性优于隐式"只要显式代码做了一些有用的事情。然而,那些else: pass
对代码没有任何积极作用。相反,他们所做的只是毫无意义地消耗两条线。
答案 1 :(得分:4)
你可以安全地删除那些因为没有任何意义保持代码无效:
if fields:
for i in foo:
if i == 'something':
print "something"
答案 2 :(得分:4)
否则传递是死代码,你应该删除它,因为它会给代码增加不必要的噪音,无论如何代码都会更清晰,更容易理解。
答案 3 :(得分:3)
我可以想到传递可能有用的几种情况 - 后两者是临时存根:
我无法想象我将使用传递
的任何其他情况修改强>
在某些情况下,当实施 if - elif - else 链时,你有一些不需要采取任何行动的常见情况 - 以及需要特定操作的罕见情况 - 为了执行效率,您可以在第一个后使用传递 :
if <some common condition>:
pass
elif <rare condition>:
<do something>
elif <another rare condition>:
<do something else>
else:
<do another stuff>
答案 4 :(得分:1)
关于 else 的事情是它们不仅仅是if语句的一部分;它出现在 尝试 语句中, 用于 循环。您没有在这些区域看到 else (在此上下文中),是吗?
try:
raw_input("say my name")
except:
print "Heisenberg"
# Meh, this is not needed.
else:
pass
如果我们循环某些东西并检查某些条件(使用 if ),那么 else 会添加不必要的行。
这是一个查找文件夹的循环:
for path in pathlist
if os.path.isdir(path):
print "Found a folder, yay!"
break
else:
continue
显然, else 在每个循环中执行并且毫无意义。这可以避免,如 PEP 8 本身所暗示的那样:
但最重要的是:知道何时不一致 - 有时风格指南不适用。如有疑问,请使用您的最佳判断。 查看其他示例并确定最佳效果。不要犹豫 问!
当应用指南时,即使是习惯于阅读本PEP之后的代码的人,也会使代码的可读性降低。