解决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正则获取、过滤或者替换HTML标签的方法
Jan 28 Python
使用C#配合ArcGIS Engine进行地理信息系统开发
Feb 19 Python
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
Jul 12 Python
教你用Python脚本快速为iOS10生成图标和截屏
Sep 22 Python
SQLite3中文编码 Python的实现
Jan 11 Python
python递归查询菜单并转换成json实例
Mar 27 Python
对Python3 pyc 文件的使用详解
Feb 16 Python
搞清楚 Python traceback的具体使用方法
May 13 Python
Python全局锁中如何合理运用多线程(多进程)
Nov 06 Python
Python 炫技操作之合并字典的七种方法
Apr 10 Python
Django如何使用jwt获取用户信息
Apr 21 Python
python能在浏览器能运行吗
Jun 17 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第一季视频教程(李炎恢+php100 不断更新)
2011/05/29 PHP
PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
2011/12/28 PHP
如何让搜索引擎抓取AJAX内容解决方案
2014/08/25 PHP
PHP中curl_setopt函数用法实例分析
2015/04/16 PHP
PHP设计模式之原型模式定义与用法详解
2018/04/03 PHP
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
javascript 基础篇3 类,回调函数,内置对象,事件处理
2012/03/14 Javascript
seajs1.3.0源码解析之module依赖有序加载
2012/11/07 Javascript
使用iframe window的scroll方法控制iframe页面滚动
2014/03/05 Javascript
JQuery对表格进行操作的常用技巧总结
2014/04/23 Javascript
JavaScript入门基础
2015/08/12 Javascript
深入理解js数组的sort排序
2016/05/28 Javascript
原生javascript 学习之js变量全面了解
2016/07/14 Javascript
ionic实现滑动的三种方式
2016/08/27 Javascript
微信小程序 http请求详细介绍
2016/10/09 Javascript
Javascript动画效果(2)
2016/10/11 Javascript
巧用数组制作图片切换js代码
2016/11/29 Javascript
BootStrap实现轮播图效果(收藏)
2016/12/30 Javascript
基于JavaScript实现活动倒计时效果
2017/04/20 Javascript
docker中编译nodejs并使用nginx启动
2017/06/23 NodeJs
vue-cli 首屏加载优化问题
2018/11/06 Javascript
详解js根据百度地图提供经纬度计算两点距离
2019/05/13 Javascript
vue中的过滤器实例代码详解
2019/06/06 Javascript
vue-cli3自动消除console.log()的调试信息方式
2020/10/21 Javascript
socket + select 完成伪并发操作的实例
2017/08/15 Python
pytorch中tensor张量数据类型的转化方式
2019/12/31 Python
Python使用pycharm导入pymysql教程
2020/09/16 Python
html5指南-4.使用Geolocation实现定位功能
2013/01/07 HTML / CSS
英国在线药房和在线药剂师:Chemist 4 U
2020/01/05 全球购物
审核会计岗位职责
2013/11/08 职场文书
远程研修随笔感言
2014/02/10 职场文书
护士岗位职责
2014/02/16 职场文书
家长通知书家长评语
2014/04/17 职场文书
导游词400字
2015/02/13 职场文书
高效笔记技巧分享:学会这些让你不再困扰
2019/09/04 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers