解决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新手实现2048小游戏
Mar 31 Python
Python中shutil模块的学习笔记教程
Apr 04 Python
windows下python之mysqldb模块安装方法
Sep 07 Python
Python工程师面试必备25条知识点
Jan 17 Python
Python实现自动上京东抢手机
Feb 06 Python
python获取当前目录路径和上级路径的实例
Apr 26 Python
Python企业编码生成系统总体系统设计概述
Jul 26 Python
Python3基本输入与输出操作实例分析
Feb 14 Python
Python统计文本词汇出现次数的实例代码
Feb 27 Python
浅谈Python 参数与变量
Jun 20 Python
Python改变对象的字符串显示的方法
Aug 01 Python
PyQt 如何创建自定义QWidget
Mar 24 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 swfupload图片上传的实例代码
2013/09/30 PHP
PHP COOKIE及时生效的方法介绍
2014/02/14 PHP
php实现mysql数据库操作类分享
2014/02/14 PHP
仿迅雷焦点广告效果(JQuery版)
2008/11/19 Javascript
jQuery学习笔记 操作jQuery对象 文档处理
2012/09/19 Javascript
JavaScript在多浏览器下for循环的使用方法
2012/11/07 Javascript
JS上传图片前的限制包括(jpg jpg gif及大小高宽)等
2012/12/19 Javascript
Javascript单元测试框架QUnitjs详细介绍
2014/05/08 Javascript
JavaScript导出Excel实例详解
2014/11/25 Javascript
Javascript前端UI框架Kit使用指南之Kitjs简介
2014/11/28 Javascript
自己封装的常用javascript函数分享
2015/01/07 Javascript
JS实现方向键切换输入框焦点的方法
2015/08/19 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
2016/05/31 Javascript
jQuery实现根据滚动条位置加载相应内容功能
2016/07/18 Javascript
Bootstrap里的文件分别代表什么意思及其引用方法
2017/05/01 Javascript
JavaScript实现QQ聊天消息展示和评论提交功能
2017/05/22 Javascript
ant-design-vue 快速避坑指南(推荐)
2020/01/21 Javascript
微信小程序弹窗禁止页面滚动的实现代码
2020/12/30 Javascript
JavaScript点击按钮生成4位随机验证码
2021/01/28 Javascript
[00:53]TI3正赛第三天 DK怒破A队不败金身 现场国旗飘扬热血激昂
2013/08/10 DOTA
[01:03:36]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第二场 1月26日
2021/03/11 DOTA
布同 统计英文单词的个数的python代码
2011/03/13 Python
python通过正则查找微博@(at)用户的方法
2015/03/13 Python
浅析Python中将单词首字母大写的capitalize()方法
2015/05/18 Python
python 上下文管理器使用方法小结
2017/10/10 Python
python MysqlDb模块安装及其使用详解
2018/02/23 Python
详解pandas中MultiIndex和对象实际索引不一致问题
2019/07/23 Python
springboot配置文件抽离 git管理统 配置中心详解
2019/09/02 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
2019/12/27 Python
django 扩展user用户字段inlines方式
2020/03/30 Python
CSS3 实现飘动的云朵动画
2020/12/01 HTML / CSS
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
2018/04/23 HTML / CSS
美国家居装饰店:Pier 1
2019/09/04 全球购物
2014年小学国庆节活动方案
2014/09/16 职场文书
教师党员自我评价范文
2015/03/04 职场文书
Lombok的详细使用及优缺点总结
2021/07/15 Java/Android