【问题标题】:Indentation of nested for loop嵌套 for 循环的缩进
【发布时间】:2012-11-07 08:48:24
【问题描述】:

我想知道为什么这是正确的:

for heading in soup.find_all("td", class_="paraheading"):
    key = " ".join(heading.text.split()).rstrip(":")
    if key in columns:
        print key
        next_td = heading.find_next_sibling("td", class_="bodytext")
        value = " ".join(next_td.text.split())
        print value
    if key == "Industry Categories":
        print key
        ic_next_td = heading.find_next_sibling("td", class_="bodytext")
        for value in ic_next_td.strings:
                print value

这不是:

for heading in soup.find_all("td", class_="paraheading"):
    key = " ".join(heading.text.split()).rstrip(":")
    if key in columns:
        print key
        next_td = heading.find_next_sibling("td", class_="bodytext")
        value = " ".join(next_td.text.split())
        print value
    if key == "Industry Categories":
        print key
        ic_next_td = heading.find_next_sibling("td", class_="bodytext")
        for value in ic_next_td.strings:
            print value

注意在第一个代码块中print value 似乎有双重缩进。

for value in ic_next_td.strings: 往下的下一个缩进级别难道不是这一行的一个额外缩进级别吗?

谢谢

【问题讨论】:

  • 您是否会随意混合制表符和空格?

标签: python indentation


【解决方案1】:

您正在混合制表符和空格。不要这样做。

运行 python -tt yourscript.py 以检测任何不一致之处,但最重要的是,始终使用空格。

将您的编辑器配置为使用空格进行缩进,并将所有现有的制表符替换为空格。大多数代码编辑器都有相应的功能。

【讨论】:

  • 制表符本身并没有错,三分之一的 Python 项目更喜欢制表符而不是空格
  • @SilentGhost:我使用的所有项目都没有使用标签。 “三分之一”是相当主观的陈述,对我来说是 0%。 :-)
  • @SilentGhost 很有趣 - 你能引用来源吗?
  • @SilentGhost PEP 8 说“对于新项目,强烈建议仅使用空格而不是选项卡。大多数编辑器都具有使此操作变得容易的功能。”
  • @SilentGhost PEP8 强烈建议使用空格而不是制表符。
【解决方案2】:

打开在编辑器中显示制表符和空格字符 - 可能会出错

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 2017-03-01
    • 1970-01-01
    相关资源
    最近更新 更多