解决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实现的金山快盘的签到程序
Jan 17 Python
python基础教程之数字处理(math)模块详解
Mar 25 Python
Python实现把utf-8格式的文件转换成gbk格式的文件
Jan 22 Python
Python获取系统默认字符编码的方法
Jun 04 Python
python操作字典类型的常用方法(推荐)
May 16 Python
python3.5+tesseract+adb实现西瓜视频或头脑王者辅助答题
Jan 17 Python
Python判断中文字符串是否相等的实例
Jul 06 Python
python通过txt文件批量安装依赖包的实现步骤
Aug 13 Python
在pytorch中为Module和Tensor指定GPU的例子
Aug 19 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
Aug 30 Python
python生成并处理uuid的实现方式
Mar 03 Python
Windows下Anaconda和PyCharm的安装与使用详解
Apr 23 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 PDOStatement:bindParam插入数据错误问题分析
2013/11/13 PHP
php网站地图生成类示例
2014/01/13 PHP
php实现图形显示Ip地址的代码及注释
2014/01/20 PHP
8个必备的PHP功能开发
2015/10/02 PHP
基于thinkPHP类的插入数据库操作功能示例
2017/01/06 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
2019/12/04 PHP
JS request函数 用来获取url参数
2010/05/17 Javascript
Jquery中val()表单取值赋值的实例代码
2013/08/15 Javascript
jQuery 删除/替换DOM元素的几种方式
2014/05/20 Javascript
JS实现的4种数字千位符格式化方法分享
2015/03/02 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
2017/01/06 Javascript
原生JS实现左右箭头选择日期实例代码
2017/03/14 Javascript
使用vue构建一个上传图片表单
2017/07/04 Javascript
javascript闭包的使用之按钮切换功能
2018/08/30 Javascript
微信小程序--获取用户地理位置名称(无须用户授权)的方法
2019/04/29 Javascript
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
2019/08/08 jQuery
Javascript 关于基本类型和引用类型的个人理解
2019/11/01 Javascript
用Golang运行JavaScript的实现示例
2019/11/25 Javascript
javaScript代码飘红报错看不懂?读完这篇文章再试试
2020/08/19 Javascript
Python简单实现控制电脑的方法
2018/01/22 Python
Python使用zip合并相邻列表项的方法示例
2018/03/17 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
2018/12/26 Python
python 实现矩阵上下/左右翻转,转置的示例
2019/01/23 Python
Python检测端口IP字符串是否合法
2020/06/05 Python
Java byte数组操纵方式代码实例解析
2020/07/22 Python
美国家居装饰购物网站:Amanda Lindroth
2020/03/25 全球购物
房地产销售计划书
2014/01/10 职场文书
企业车辆管理制度
2014/01/24 职场文书
2014政务公开实施方案
2014/02/19 职场文书
餐饮投资计划书
2014/04/25 职场文书
解除劳动合同证明书
2014/09/26 职场文书
2014年纪检工作总结
2014/11/12 职场文书
2015年度环卫处工作总结
2015/07/24 职场文书
关于党风廉政建设宣传教育月的活动总结!
2019/08/08 职场文书
2019年图书室自查报告范本
2019/10/12 职场文书
MySQL数据库配置信息查看与修改方法详解
2022/06/25 MySQL