解决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解析网页源代码中的115网盘链接实例
Sep 30 Python
python实现获取客户机上指定文件并传输到服务器的方法
Mar 16 Python
浅谈python抛出异常、自定义异常, 传递异常
Jun 20 Python
Python实现按学生年龄排序的实际问题详解
Aug 29 Python
给你选择Python语言实现机器学习算法的三大理由
Nov 15 Python
Django 实现购物车功能的示例代码
Oct 08 Python
使用PyCharm创建Django项目及基本配置详解
Oct 24 Python
Python实现获取系统临时目录及临时文件的方法示例
Jun 26 Python
python 爬取古诗文存入mysql数据库的方法
Jan 08 Python
解决python gdal投影坐标系转换的问题
Jan 17 Python
Python tcp传输代码实例解析
Mar 18 Python
Django中ORM找出内容不为空的数据实例
May 20 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实现手机号码中间四位用星号(*)隐藏的自定义函数分享
2014/09/27 PHP
PHP INT类型在内存中占字节详解
2019/07/20 PHP
boxy基于jquery的弹出层对话框插件扩展应用 弹出层选择器
2010/11/21 Javascript
用js小类库获取浏览器的高度和宽度信息
2012/01/15 Javascript
js字符串转成JSON
2013/11/07 Javascript
各浏览器对document.getElementById等方法的实现差异解析
2013/12/05 Javascript
js中将String转换为number以便比较
2014/07/08 Javascript
javascript原生和jquery库实现iframe自适应高度和宽度
2014/07/18 Javascript
Javascript基础教程之数据类型转换
2015/01/18 Javascript
jquery专业的导航菜单特效代码分享
2015/08/29 Javascript
JavaScript 不支持 indexof 该如何解决
2016/03/30 Javascript
jQuery EasyUI右键菜单实现关闭标签/选项卡
2016/10/10 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
BootStrap下的弹出框加载select2框架失败的解决方法
2017/08/31 Javascript
vue从后台渲染文章列表以及根据id跳转文章详情详解
2020/12/14 Vue.js
解决Ubuntu pip 安装 mysql-python包出错的问题
2018/06/11 Python
python导入模块交叉引用的方法
2019/01/19 Python
pytorch中torch.max和Tensor.view函数用法详解
2020/01/03 Python
python实现ip地址的包含关系判断
2020/02/07 Python
python 中不同包 类 方法 之间的调用详解
2020/03/09 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
2020/04/23 Python
Python使用eval函数执行动态标表达式过程详解
2020/10/17 Python
Camille Jewelry官网:现代女性时尚首饰
2019/07/07 全球购物
数据库的约束含义
2012/09/09 面试题
Ajax请求总共有多少种Callback
2016/07/17 面试题
Unix里面如何在后台运行程序
2016/10/14 面试题
教育实习生的自我评价分享
2013/11/21 职场文书
工作失误检讨书范文大全
2014/01/13 职场文书
财经学院自荐信范文
2014/02/02 职场文书
乡镇三项教育实施方案
2014/03/30 职场文书
请假条标准格式规范
2014/04/10 职场文书
给客户的感谢信
2015/01/21 职场文书
涪陵白鹤梁导游词
2015/02/09 职场文书
2015年妇委会工作总结
2015/05/22 职场文书
2019年怎样才能撰写出优秀的自荐信
2019/03/25 职场文书
HttpClient实现文件上传功能
2022/08/14 Java/Android