解决python的空格和tab混淆而报错的问题


Posted in Python onFebruary 26, 2021

在python里头,空格和tab是区分开的,二者混在一起就会报错,要么只用空格,要么只用tab

如果你用的是python的官方编译器,通过以下方法可以直接将整个页面的间隔符号统一:

1. 全选整个代码(edit——select All)

2. 统一间隔符号为tab(format——tabify region),或者统一间隔符号为空格(format——untabify region)

补充:python 中缩进—— tab 还是空格是不一样的,一般不能混用,除非设置Tab自动替换成空格

如下所示:

实验代码:if 10>4: print(“hello”) print(“hello”) print(“hello”) 实验一 实验二 实验三 实验四 实验五
操作 每一行都用1个 tab 键缩进 第一行用1个 tab,第二行用 2个 tab, 第三行用1个 tab 用空格键缩进,每一行都用1个空格。 第一行用1个空格,第二行用1个空格,第三行用2个空格 混合用tab和空格:第一行用1个tab(编辑器中设置一个tab的宽度是4个空格),第二行用1个tab,第三行用4个空格。
结果 没有报错 IndentationError: unexpected indent 没有报错 IndentationError: unexpected indent IndentationError: unindent does not match any outer indentation level
分析 我们看一下代码的 ASCII,以确定用的确实是 tab 看一下 ASCII 码,确定确实用了不同个数的 tab 看一下 ASCII 码,确定我们用的是空格(ASCII 值是 0x20) 用空格缩进是可以的,但是要保证每行用同样个数的空格 。 看一下 ASCII 码,就知道空格和 tab 混用了。空格和tab不能混用

实验6

混合用tab和空格:每一行都用4个空格 + 一个tab

哦,我想起来了,贴 ASCII 码实在是麻烦,编辑器有一个显示空格和制表符的功能。咱们显示出来后贴个代码截图图。

运行结果

hello

hello

hello

虽然可以成功运行,但这样做就是“作”。

实验结论

做了这么多实验,终于可以得出结论了:

Python中缩进可以用空格,也可以用tab,甚至可以混用(比如每一行你先用1个tab,再用4个空格,再用2个tab,再用4个空格);

不管你怎么缩进的,你都要保证,第二行和第一行用的字符一样,第三行和第二行用的字符一样,…… ,也就是每一行用的字符一样。

最佳实践

其实 Python 并没有强制要求你用Tab缩进或者用空格缩进,但在 PEP8中,建议使用4个空格来缩进。

Python Enhancement Proposals index 8 —— Style Guide for Python Code

https://www.python.org/dev/peps/pep-0008/

Use 4 spaces per indentation level.

notepad++ Tab自动转换成4个空格

对于 VIM,可以这样设置

set tabstop=4 "设置Tab显示的宽度为4个空格

set expandtab "设置将Tab自动展开成为空格

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Python 相关文章推荐
Python strip lstrip rstrip使用方法
Sep 06 Python
Fiddler如何抓取手机APP数据包
Jan 22 Python
Python中的浮点数原理与运算分析
Oct 12 Python
Python安装Numpy和matplotlib的方法(推荐)
Nov 02 Python
python scp 批量同步文件的实现方法
Jan 03 Python
Python定义函数功能与用法实例详解
Apr 08 Python
解决Django一个表单对应多个按钮的问题
Jul 18 Python
Python如何读写CSV文件
Aug 13 Python
python利用google翻译方法实例(翻译字幕文件)
Sep 21 Python
python实现粒子群算法
Oct 15 Python
解决Python字典查找报Keyerror的问题
May 26 Python
分享提高 Python 代码的可读性的技巧
Mar 03 Python
Python Spyder 调出缩进对齐线的操作
Feb 26 #Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
Feb 26 #Python
Python plt 利用subplot 实现在一张画布同时画多张图
Feb 26 #Python
Python xlwings插入Excel图片的实现方法
Feb 26 #Python
基于tensorflow __init__、build 和call的使用小结
Feb 26 #Python
python实现MySQL指定表增量同步数据到clickhouse的脚本
Feb 26 #Python
详解python的xlwings库读写excel操作总结
Feb 26 #Python
You might like
提高PHP编程效率 引入缓存机制提升性能
2010/02/15 PHP
php unset全局变量运用问题的深入解析
2013/06/17 PHP
PHP实现通用alert函数的方法
2015/03/11 PHP
PHP PDOStatement::fetchObject讲解
2019/02/01 PHP
Javascript注入技巧
2007/06/22 Javascript
javascript入门基础之私有变量
2010/02/23 Javascript
JavaScript中各种编码解码函数的区别和注意事项
2010/08/19 Javascript
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
2011/01/12 Javascript
javascript动态加载三
2012/08/22 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
jquery ajax应用中iframe自适应高度问题解决方法
2014/04/12 Javascript
第一次接触神奇的Bootstrap菜单和导航
2016/08/01 Javascript
JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析
2017/09/05 Javascript
JavaScript实现音乐自动切换和轮播
2017/11/05 Javascript
vue脚手架中配置Sass的方法
2018/01/04 Javascript
vuex管理状态 刷新页面保持不被清空的解决方案
2019/11/11 Javascript
[45:25]完美世界DOTA2联赛循环赛 PXG vs IO 第一场 11.06
2020/11/09 DOTA
Python 3.x 判断 dict 是否包含某键值的实例讲解
2018/07/06 Python
Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
2018/07/18 Python
Anaconda下配置python+opencv+contribx的实例讲解
2018/08/06 Python
Python中Numpy mat的使用详解
2019/05/24 Python
python多进程并行代码实例
2019/09/30 Python
Python如何使用内置库matplotlib绘制折线图
2020/02/24 Python
Python进行统计建模
2020/08/10 Python
通过代码实例解析Pytest运行流程
2020/08/20 Python
用 python 进行微信好友信息分析
2020/11/28 Python
python网络爬虫实现发送短信验证码的方法
2021/02/25 Python
使用css3制作登录表单的步骤
2014/04/07 HTML / CSS
HTML5在canvas中绘制复杂形状附效果截图
2014/06/23 HTML / CSS
canvas绘制视频封面的方法
2018/02/05 HTML / CSS
Final类有什么特点
2012/04/25 面试题
Unix如何在一行中运行多个命令
2015/05/29 面试题
父母教会我观后感
2015/06/17 职场文书
会计岗位工作总结
2015/08/12 职场文书
《狮子和鹿》教学反思
2016/02/16 职场文书
pandas 操作 Excel操作总结
2021/03/31 Python