【问题标题】:Inconsistent use of spaces and tabs in Python [duplicate]Python中空格和制表符的使用不一致[重复]
【发布时间】:2019-04-16 02:38:20
【问题描述】:

我正在尝试打印 AWS 中的组列表。

在这些行中,只有一行产生了缩进错误。如果我使用此代码:

group_list = client.list_groups()
print("Group List for %s:")
for group in group_list['Groups']:
    group_name = group['GroupName']
    print(group_name)

我收到此错误:

  File ".\aws_iam_utils.py", line 966
    print(group_name)
                    ^
TabError: inconsistent use of tabs and spaces in indentation

但如果我删除print(group_name) 行,程序就会运行。

我尝试在该行中添加 4 个空格,但当这不起作用时,我使用一个选项卡添加它。

它的缩进级别与上一行完全相同。所以我不知道为什么会发生这个错误。

【问题讨论】:

  • 检查整个文件是否一致。
  • 如果删除两个缩进行,然后用 4 个空格再次添加它们会怎样?如果group_name = group['GroupName'] 当前使用制表符缩进,并且如果您的文本编辑器在您按下“制表符”时插入了四个空格,那么重写print(group_name) 将无济于事。

标签: python


【解决方案1】:

Python 严重依赖一致的代码缩进来识别代码块,当您使用不同的制表符和/或空格组合来缩进同一代码块中的行时,会发生TabError 异常。

您应该检查用于在错误行之前缩进该行的制表符/空格:

    group_name = group['GroupName']

并确保它具有用于缩进错误行的相同的制表符和空格组合:

    print(group_name)

此外,通常不鼓励在 Python 中使用制表符进行缩进,因为很容易遇到这样的问题。我建议您将所有制表符转换为 4 个空格,以便更容易发现此类不一致的缩进问题。

【讨论】:

    【解决方案2】:

    当您在缩进中混合使用空格和制表符时,会发生不好的事情,这个错误是一个常见问题。这意味着您要么为循环中的第一个语句使用空格,而为第二个语句使用制表符,您为第一个语句使用制表符,为第二个语句使用空格。

    删除所有缩进,然后重新添加。保留 all 空格或 all 选项卡,它会正常工作。通常的约定是使用空格,除非您正在使用使用制表符的代码,因此除非出于兼容性原因需要使用制表符,否则请改用空格。见this section of the style guide

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-10
      • 2011-08-06
      • 1970-01-01
      • 2015-08-28
      • 2019-04-15
      • 2020-01-23
      相关资源
      最近更新 更多