Python 中出现“意外缩进”该怎么办?

2023-12-07

如何纠正 Python 中的“意外缩进”错误?


Python 使用行开头的空格来确定代码块的开始和结束时间。您可能遇到的错误有:

意外的缩进。这行代码的开头比前一行有更多的空格,但前一行不是子块的开头(例如,if, while, and for声明)。块中的所有代码行必须以完全相同的空格字符串开头。例如:

>>> def a():
...   print "foo"
...     print "bar"
IndentationError: unexpected indent

这种情况在交互式运行 Python 时尤其常见:确保命令前没有添加任何额外的空格。 (复制粘贴示例代码时非常烦人!)

>>>   print "hello"
IndentationError: unexpected indent

取消缩进不匹配任何外部缩进级别。这行代码的开头空格比前一行少,但同样它不匹配它可能属于的任何其他块。 Python 无法决定它的去向。例如,在下面的例子中,最终的打印是否应该是 if 子句的一部分?

>>> if user == "Joey":
...     print "Super secret powers enabled!"
...   print "Revealing super secrets"
IndendationError: unindent does not match any outer indentation level

预期是一个缩进块。这行代码的开头空格数与前一行相同,但最后一行预计将开始一个块(例如,if, while, for语句或函数定义)。

>>> def foo():
... print "Bar"
IndentationError: expected an indented block

如果您想要一个不执行任何操作的函数,请使用“no-op”命令pass:

>>> def foo():
...     pass

允许混合使用制表符和空格(至少在我的 Python 版本上),但 Python 假定制表符长度为 8 个字符,这可能与您的编辑器不匹配。不要混合使用制表符和空格。大多数编辑器允许自动替换其中一个。如果您在一个团队中,或者在一个开源项目中工作,看看他们更喜欢哪个。

避免这些问题的最佳方法是在缩进子块时始终使用一致数量的空格,并且最好使用能够为您解决问题的良好 IDE。这也将使您的代码更具可读性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 中出现“意外缩进”该怎么办? 的相关文章

随机推荐

  • 使用 JDBC 的小程序 - java.security.AccessControlException:访问被拒绝

    JDBC using Applet import javax swing JApplet JLabel JButton import java applet Applet import java awt Layout import java
  • 如何在C中使用scanf获取数组中的整数输入?

    我使用 scanf 获取多个整数输入并将其保存在数组中 while scanf d array i 1 输入整数由空格分隔 例如 12 345 132 123 我在另一篇文章中读到了这个解决方案 但问题是 while 循环没有终止 这个说法
  • 相同的 WSAPI v2.0 安全密钥可在 REST 客户端中使用,但与 curl 一起使用时会产生无效密钥错误

    在浏览器的 REST 客户端中 当我发布到此 URL 时 https rally1 rallydev com slm webservice v2 0 HierarchicalRequirement create key 123abc 使用此
  • C中的链表排序

    我正在为我的一个类编写一个简单的文件 这是一个简单的链接列表活动 我需要对链接列表进行排序 到目前为止 这是我的源代码 Simple list manipulation exercise 1 Create a list of integer
  • gdb - 使用管道进行调试

    假设我有两个名为blah and ret 我想调试blah接收输入的程序ret通过 I O 重定向进行编程 我该如何调试blah在以下情况下使用 gdb 进行编程 bash gt ret blah 首先 您可以运行程序并通过pid进行调试
  • 计算两个日期之间的差异

    我在txt文件中的日期是这样的 开始日期 011589 结束日期是 122390 如何使用 R 计算持续时间 我试过 mydata startdate as Date mydata startdate 但没用 这可以使用以下方法完成form
  • 将 CSV 附件导入 Google 表格

    我想做的是将 CSV 附件的内容输出到 Google Sheets 上 不知道我这样做是否正确 但我在网上找到了这个 运行了它 然后什么也没有发生 function importCSVFromGmail var threads GmailA
  • Matplotlib 散点图 - 删除白色填充

    我正在使用 matplotlib 在纬度经度坐标中绘制变量 问题是该图像不能包含轴或边框 我已经能够删除轴 但图像周围的白色填充必须完全删除 请参阅下面代码中的示例图像 https i stack imgur com nHCPF jpg 我
  • 如何使用MySQL DECIMAL?

    我不太了解 MySQL 的 DECIMAL 我需要该行能够包含 00 0001 到 99 9999 之间的任何数字 我将如何构建它以像这样工作 双列是not与 DECIMAL 列相同 并且您会遇到麻烦如果您对财务数据使用双列 DOUBLE
  • 为什么 AnsiSameText 不是 ANSI?

    从名字上看 人们会相信 SysUtils Delphi XE 中定义的 AnsiSameText 将接收 ANSI 字符串作为参数 但该函数的定义如下 function AnsiSameText const S1 S2 string Boo
  • 上传前验证文件大小

    我需要验证要上传到服务器的文件 上传之前必须进行验证 即在客户端完成验证 此任务应在 ASP NET MVC3 网页中完成 它还应该适用于所有浏览器 IE9 8 7 FF Chrome 我发现 IE 没有 FileReader API 我的
  • 无法在 Solr 中使用 ICUTokenizerFactory

    我正在尝试在 Solr 模式中使用 ICUTokenizerFactory 这就是我的定义field and fieldType
  • jQuery 拖动/使用 CSS 变换比例调整大小

    我正在应用 CSS 转换 以及浏览器特定的 webkit o 等 变换 矩阵 0 5 0 0 0 5 0 0 到一个 div 然后在该 div 的子级上使用 jQuery 的draggable 和 ressized 插件 我遇到的问题是 当
  • OnActionExecuting 在标准 asp.NET 中等效吗?

    是否有 MVC NET 的等效项OnActionExecuting在标准 asp net 中 我以为会是Page Load since OnActionExecuting每次执行操作 或加载页面 时都会调用 但当我尝试使用 Page Loa
  • 活动和片段有什么区别?

    根据我的研究 backstack 的概念及其存在方式存在显着差异 Activity When an activity被放置到backstack of activities用户 只需按一下即可导航回到上一个活动back button Acti
  • 如何在C中检查网络设备状态?

    我想检查网络设备状态 例如混杂模式 基本上就像所示ip a命令 也许有人可以把我推向正确的方向 我想在 Linux 的 C 语言中执行此操作 以便可以使用 Linux 特定的头文件 您需要使用SIOCGIFFLAGSioctl 检索与接口关
  • android:如何从我的应用程序打开另一个应用程序?

    我了解在我自己的应用程序中打开另一个活动时如何使用意图和 startActivity 但是如何启动不同的应用程序 具体来说 如何确定用户的设备上是否安装了所需的应用程序 你如何启动该应用程序 如何将参数传递给该应用程序 如何找到特定应用程序
  • 如何在 R 中加载 MASS 库的数据集部分?

    我正在阅读这本关于统计学习 机器学习和 R 的书 其中一个问题是 首先 加载波士顿数据集 波士顿数据集是 R 中的 MASS 库 library MASS 现在数据集包含在对象中Boston 阅读有关数据集的信息 Boston 我不明白语法
  • Spring MVC 事务控制器

    我正在尝试获取一个 Spring MVC 控制器方法 该方法已用 Transactional 注释 如果在该方法返回之前在客户端拉动网络电缆 则该方法将回滚 我似乎无法让它工作 这是一个示例我想要实现的目标 Transactional ro
  • Python 中出现“意外缩进”该怎么办?

    如何纠正 Python 中的 意外缩进 错误 Python 使用行开头的空格来确定代码块的开始和结束时间 您可能遇到的错误有 意外的缩进 这行代码的开头比前一行有更多的空格 但前一行不是子块的开头 例如 if while and for声明