解决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 thread 并发且顺序运行示例
Apr 09 Python
Web服务器框架 Tornado简介
Jul 16 Python
python回溯法实现数组全排列输出实例分析
Mar 17 Python
Python向日志输出中添加上下文信息
May 24 Python
numpy.linspace 生成等差数组的方法
Jul 02 Python
tensorflow使用神经网络实现mnist分类
Sep 08 Python
python+pyqt5实现图片批量缩放工具
Mar 18 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
Oct 12 Python
Python 根据数据模板创建shapefile的实现
Nov 26 Python
如何在Python 游戏中模拟引力
Mar 27 Python
python 模拟在天空中放风筝的示例代码
Apr 21 Python
Python学习之异常中的finally使用详解
Mar 16 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
Amazon Prime Video平台《无限住人 -IMMORTAL-》2020年开始TV放送!
2020/03/06 日漫
通过JavaScript或PHP检测Android设备的代码
2011/03/09 PHP
PHP表单提交表单名称含有点号(.)则会被转化为下划线(_)
2011/12/14 PHP
php生成数组的使用示例 php全组合算法
2014/01/16 PHP
php双层循环(九九乘法表)
2017/10/23 PHP
php设计模式之代理模式分析【星际争霸游戏案例】
2020/03/23 PHP
PHP实现获取文件mime类型多种方法解析
2020/05/28 PHP
jQuery Tools Dateinput使用介绍
2012/07/14 Javascript
jquery实现input输入框实时输入触发事件代码
2014/01/28 Javascript
JS基于cookie实现来宾统计记录访客信息的方法
2015/08/04 Javascript
jQuery Easyui快速入门教程
2016/08/21 Javascript
jquery ajax后台返回list,前台用jquery遍历list的实现
2016/10/30 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
2016/11/05 Javascript
Bootstrap缩略图与警告框学习使用
2017/02/08 Javascript
鼠标经过出现气泡框的简单实例
2017/03/17 Javascript
微信小程序滚动Tab实现左右可滑动切换
2017/08/17 Javascript
vue打包后显示空白正确处理方法
2017/11/01 Javascript
IntelliJ IDEA 安装vue开发插件的方法
2017/11/21 Javascript
AngularJS动态添加数据并删除的实例
2018/02/27 Javascript
vue-cli随机生成port源码的方法
2019/09/02 Javascript
html2canvas属性和使用方法以及如何使用html2canvas将HTML内容写入Canvas生成图片
2020/01/12 Javascript
vue 添加和编辑用同一个表单,el-form表单提交后清空表单数据操作
2020/08/03 Javascript
Python图像灰度变换及图像数组操作
2016/01/27 Python
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
2019/05/13 Python
django序列化时使用外键的真实值操作
2020/07/15 Python
python基于pexpect库自动获取日志信息
2021/02/01 Python
欧舒丹俄罗斯官方网站:L’OCCITANE俄罗斯
2019/11/22 全球购物
Crocs欧洲官网:Crocs Europe
2020/01/14 全球购物
地球鞋加拿大官网:Earth Shoes Canada
2020/11/17 全球购物
SHEIN美国:购买时髦的女性服装
2020/12/02 全球购物
运行时异常与一般异常有何异同?
2014/01/05 面试题
小学毕业感言50字
2014/02/16 职场文书
《云雀的心愿》教学反思
2014/02/25 职场文书
2014年办公室人员工作总结
2014/12/09 职场文书
市直属机关2016年主题党日活动总结
2016/04/05 职场文书
JavaGUI模仿QQ聊天功能完整版
2021/07/04 Java/Android