解决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之坑爹的字符编码
Sep 28 Python
Python最基本的输入输出详解
Apr 25 Python
Python中的choice()方法使用详解
May 15 Python
Python算术运算符实例详解
May 31 Python
Python中一般处理中文的几种方法
Mar 06 Python
Django实现单用户登录的方法示例
Mar 28 Python
python字符串分割及字符串的一些常规方法
Jul 24 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
Aug 30 Python
使用pandas 将DataFrame转化成dict
Dec 10 Python
Tensorflow设置显存自适应,显存比例的操作
Feb 03 Python
python手写均值滤波
Feb 19 Python
python设置中文界面实例方法
Oct 27 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代码的53条建议
2008/03/27 PHP
php无限极分类递归排序实现方法
2014/11/11 PHP
PHP curl使用实例
2015/07/02 PHP
PHP代码维护,重构变困难的4种原因分析
2016/01/25 PHP
javascript 表格排序和表头浮动效果(扩展SortTable)
2009/04/07 Javascript
JQuery操作iframe父页面与子页面的元素与方法(实例讲解)
2013/11/20 Javascript
javascript操作字符串的原生方法
2014/12/22 Javascript
jquery实现标签支持图文排列带上下箭头按钮的选项卡
2015/03/14 Javascript
jqPlot jQuery绘图插件的使用
2016/06/18 Javascript
AngularJS基础 ng-src 指令简单示例
2016/08/03 Javascript
归纳下js面向对象的几种常见写法总结
2016/08/24 Javascript
vue实现添加标签demo示例代码
2017/01/21 Javascript
原生js jquery ajax请求以及jsonp的调用方法
2017/08/04 jQuery
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
2020/01/16 Javascript
Vue的双向数据绑定实现原理解析
2020/02/17 Javascript
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
[01:29:17]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
python发送伪造的arp请求
2014/01/09 Python
python调用机器喇叭发出蜂鸣声(Beep)的方法
2015/03/23 Python
Python中的Numeric包和Numarray包使用教程
2015/04/13 Python
python绘图方法实例入门
2015/05/19 Python
python中实现k-means聚类算法详解
2017/11/11 Python
python关闭占用端口方式
2019/12/17 Python
python爬虫模拟浏览器访问-User-Agent过程解析
2019/12/28 Python
Python类中的装饰器在当前类中的声明与调用详解
2020/04/15 Python
Python Celery异步任务队列使用方法解析
2020/08/10 Python
Python实现播放和录制声音的功能
2020/08/12 Python
python实现不同数据库间数据同步功能
2021/02/25 Python
全球高级音频和视频专家:HiDef Lifestyle
2019/08/02 全球购物
编写类String的构造函数、析构函数和赋值函数
2012/05/29 面试题
生产部岗位职责范文
2014/02/07 职场文书
原告离婚代理词
2015/05/23 职场文书
党小组考察意见
2015/06/02 职场文书
MySQL连接查询你真的学会了吗?
2021/06/02 MySQL
Mysql数据库表中为什么有索引却没有提高查询速度
2022/02/24 MySQL
css3带你实现3D转换效果
2022/02/24 HTML / CSS