有人可以解释为什么else: pass
需要下面显示的内容才能执行其余代码(最终print 'processing...
语句)吗?注意print
inelse
被放在那里只是为了让我知道执行确实是在走这条路。
似乎只要continue
不执行 就应该发生这种情况,因为 中的代码else
什么都不做。但是,如果我离开了,当条件为 False 时,循环中似乎不会执行else
任何进一步的操作——当目录中确实存在具有扩展名的文件时——这对我来说没有意义。文档说“继续最近的封闭循环的下一个循环”,很好,但是如果没有执行,不应该处理继续下一条语句吗?for
continue
import os
source_dir = r'C:\Downloads'
ext = '.mp3'
for dirName, subdirList, fileList in os.walk(source_dir):
if not any(os.path.splitext(fileName)[1].lower() == ext for fileName in fileList):
print ' skipping "{}"'.format(dirName)
continue
else: # why is this clause needed to continue this iteration of a loop?
print 'contains "{}"'.format(dirName)
pass
print 'processing "{}" which has "{}" files'.format(dirName, ext)
谜团已揭开
看似奇怪的行为是由于缩进问题,这在上面的代码中不可见,通常在我的文本编辑器中也不可见。事实证明,最后一个语句缩进了 3 个空格,然后是一个制表符,这print
使它看起来与. 显然让我很困惑。else
pass
else
continue
if
这是我的文本编辑器中的代码截图,它的“显示空间/标签”选项已打开。红点代表空格,红色右 guillemet ( »
) 代表制表符: