解决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中的__slots__缓存资源以节省内存开销的方法
Apr 02 Python
从Python程序中访问Java类的简单示例
Apr 20 Python
Python实现登录人人网并抓取新鲜事的方法
May 11 Python
浅析Python中将单词首字母大写的capitalize()方法
May 18 Python
python通过get,post方式发送http请求和接收http响应的方法
May 26 Python
Swift中的协议(protocol)学习教程
Jul 08 Python
python 系统调用的实例详解
Jul 11 Python
Django集成CAS单点登录的方法示例
Jun 10 Python
Python中常用的高阶函数实例详解
Feb 21 Python
python3中的logging记录日志实现过程及封装成类的操作
May 12 Python
Python中三维坐标空间绘制的实现
Sep 22 Python
Django自定义YamlField实现过程解析
Nov 11 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
第十三节--对象串行化
2006/11/16 PHP
FirePHP 推荐一款PHP调试工具
2011/04/23 PHP
thinkPHP5框架设置404、403等http状态页面的方法
2018/06/05 PHP
Ajax+PHP实现的分类列表框功能示例
2019/02/11 PHP
PHP7新特性
2021/03/09 PHP
JavaScript 基于原型的对象(创建、调用)
2009/10/16 Javascript
jQuery父级以及同级元素查找介绍
2013/09/04 Javascript
javascript设置金额样式转换保留两位小数示例代码
2013/12/04 Javascript
关于img的href和src取变量及赋值的方法
2014/04/28 Javascript
Javascript玩转继承(二)
2014/05/08 Javascript
nodejs爬虫抓取数据乱码问题总结
2015/07/03 NodeJs
JS实现仿腾讯微博无刷新删除微博效果代码
2015/10/16 Javascript
js实现跨域访问的三种方法
2015/12/09 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
2015/12/10 Javascript
vue2组件实现懒加载浅析
2017/03/29 Javascript
node+vue实现用户注册和头像上传的实例代码
2017/07/20 Javascript
spring+angular实现导出excel的实现代码
2019/02/27 Javascript
layui使用数据表格实现购物车功能
2019/07/26 Javascript
layui 实现加载动画以及非真实加载进度的方法
2019/09/23 Javascript
Vue如何基于es6导入外部js文件
2020/05/15 Javascript
vue实现员工信息录入功能
2020/06/11 Javascript
Python实现运行其他程序的四种方式实例分析
2017/08/17 Python
Python实现决策树C4.5算法的示例
2018/05/30 Python
Python中函数参数调用方式分析
2018/08/09 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
python读取并写入mat文件的方法
2019/07/12 Python
python如何统计代码运行的时长
2019/07/24 Python
Matplotlib中%matplotlib inline如何使用
2020/07/28 Python
html5中的input新属性range使用记录
2014/09/05 HTML / CSS
使用canvas绘制超炫时钟
2014/12/17 HTML / CSS
医学护理系毕业生求职信
2013/10/01 职场文书
12月红领巾广播稿
2014/02/13 职场文书
学历证明范文
2015/06/16 职场文书
分布式Redis Cluster集群搭建与Redis基本用法
2022/02/24 Redis
使用Python获取字典键对应值的方法
2022/04/26 Python
win10电脑右下角输入法图标不见了?Win10右下角不显示输入法的解决方法
2022/07/23 数码科技