python中tab键是什么意思


Posted in Python onJune 18, 2020

对于程序员来说,其实Tab和空格远远不只是“立场”问题那么简单。

在不同的编辑器里tab的长度可能不一致,所以在一个编辑器里用tab设置缩进后,在其它编辑器里看可能缩进就乱了。空格不会出现这个问题,因为空格就占一个字符的位置。

众所周知,Tab在ASCII码中,编码是9,而空格是32。这也就是说,当我们按下一个Tab的时候,即使它看起来就是8个空格(或者4个空格,不同的环境下,Tab可能显示的效果不同),对于电脑来说,却是完全不一样的东西。这也意味着,对于用字符来描述过程的代码来说,极有可能会是决定性的差异。

尤其是对于一门用空格缩进来区分代码层次的语言——Python。

我们来看一段代码。

class MyForm(Form):
 value1 = StringField('value1')
 value2 = StringField('value2')
 value3 = StringField('value3')  #这行用的是Tab缩进
 submit = SubmitField('Submit')
 learn python = 'QQ group:725479218'

看起来这个value3变量和其他的变量没有什么不同,然而却出现了这样的报错——缩进错误。

value3 = StringField('value3')
IndentationError: unexpected indent

其实Python并没有强制要求你用Tab缩进或者用空格缩进,甚至空格按几个都没有强制要求,但是却绝对!绝对不能混用Tab和空格,那么这里,是不是空格和Tab的区别就显得很大了呢?

这个时候有的童鞋就要说了,我用PyCharm(或者其他IDE)怎么从来都没有出现这样的问题呢?

其实,很多IDE对Tab键做了各种各样的优化,其中有一条就是,将Tab键展开为为空格,也就是说,当你按下Tab的时候,IDE实际上帮你把一个「9」转换成了四个(或者八个)「32」。但是要注意,不是所有的IDE都帮你做了这样的工作!同理,对于好纯洁好不做作的编辑器Vim来说,肯定也不会帮你做这样的工作了。

既然Tab在不同的环境下展现不一样,而空格却永远都是一样的。对于一些细致排版缩进来说(比如说想把每一行的注释都对齐),用空格也更加精确。这样看起来,确实是用空格来写代码要好于用Tab呢。

空格代替Tab的好处:

空格在各种情况下代码都是你想要的样子。而 tab 仅仅当你与代码作者的 tab 尺寸设定为相同时,代码才好看。修改 tab 尺寸并不能解决这个问题,因为你很难做到每打开一个文件就修改一次 tab 尺寸,而每个人通常有不同的习惯(POSIX/Unix 标准的 tab 应当为 8 字符宽度,Linus 大神也规定 Linux 内核中所有代码的 tab 尺寸为 8)。如果存在行尾注释,则 tab 尺寸更加是必须设定为与作者相同,这就意味着你看不同的代码需要经常修改 tab 尺寸。我看过许多代码,其使用的 tab 尺寸有从 2,3,4,5,6,8,16 甚至 32 的,如果你使用的 tab 尺寸与作者不同,外观将很不理想。

靠谱的IDE都能解决前进后退增加减少缩进的问题,即便是四个空格,一个退格键也能全退了,所以在使用的方便性方面根本不存在问题。——如果抱怨删除调整还不能有效解决的,你需要研究一下你的编辑器了。实际上增加减少缩进在主流编辑器中都直接有快捷键,无论是 tab 还是空格还是退格都很少直接被用于缩进。

tab 是制表符而不是缩进符,正如在 html 页面中大量使用<table>进行布局是个不好的编程习惯一样,在编程中大量使用制表符布局通常也不是个好习惯。

一般情况下,团队开发都要制定一套编码规范, 在大部分团队中,使用4个空格代替Tab是大家默认的。所以非常建议大家使用空格代替Tab, 另外各个IDE(编辑器)都提供了tab自动转换空格的功能,只要大家设置一下,按下tab键就可以出现4个或者多个空格。

内容扩展:

Python_Tab键的使用

1. 在shell中输入表达式时,只要按下Tab键,当前命名空间中任何与已输入的字符串相匹配的变量(对象,函数等)就会被找出来:

In[1]: an_orange = 27
In[2]: an_pear = 15
In[3]: an(按<Tab>)
anorange an_pear and any

2.在任何对象后面输入一个句点以便自动完成方法和属性的输入:

In[1]: a = [1,2,3]
In[2]: a.<Tab>
a.append a.extend a.remove a.sort
a.count a.index a.pop a.reserve

3.应用在模块上:

In[1]: import pandas
In[2]: pandas.<Tab>
pandas.cut pandas.core pandas.concat

4.当输入任何看上去像是文件路径的东西时(即使是在一个Python字符串中),按下Tab键即可找出电脑文件系统中与之匹配的东西。

5.Tab键自动完成功能可用于函数关键字参数。

到此这篇关于python中tab键是什么意思的文章就介绍到这了,更多相关python中的tab键表示什么意思内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python接收Gmail新邮件并发送到gtalk的方法
Mar 10 Python
pymongo给mongodb创建索引的简单实现方法
May 06 Python
OpenCV实现人脸识别
Apr 07 Python
python字符串string的内置方法实例详解
May 14 Python
Django开发中的日志输出的方法
Jul 02 Python
python+pandas+时间、日期以及时间序列处理方法
Jul 10 Python
Python的argparse库使用详解
Oct 09 Python
python实现微信自动回复机器人功能
Jul 11 Python
Python tkinter常用操作代码实例
Jan 03 Python
PyTorch 普通卷积和空洞卷积实例
Jan 07 Python
python3用PyPDF2解析pdf文件,用正则匹配数据方式
May 12 Python
python和C/C++混合编程之使用ctypes调用 C/C++的dll
Apr 29 Python
python中可以声明变量类型吗
Jun 18 #Python
tensorflow之读取jpg图像长和宽实例
Jun 18 #Python
Python叠加矩形框图层2种方法及效果
Jun 18 #Python
python中rb含义理解
Jun 18 #Python
python如何输出反斜杠
Jun 18 #Python
python能自学吗
Jun 18 #Python
关于tf.matmul() 和tf.multiply() 的区别说明
Jun 18 #Python
You might like
多重?l件?合查?(二)
2006/10/09 PHP
使用PHP获取网络文件的实现代码
2010/01/01 PHP
ThinkPHP CURD方法之table方法详解
2014/06/18 PHP
YII实现分页的方法
2014/07/09 PHP
Wordpress ThickBox 点击图片显示下一张图的修改方法
2010/12/11 Javascript
更优雅的事件触发兼容
2011/10/24 Javascript
jQuery隔行变色与普通JS写法的对比
2013/04/21 Javascript
jQuery bxCarousel实现图片滚动切换效果示例代码
2013/05/15 Javascript
javascript中数组的sort()方法的使用介绍
2013/12/18 Javascript
jQuery学习笔记之2个小技巧
2015/01/19 Javascript
jQuery实现购物车计算价格功能的方法
2015/03/25 Javascript
Angular2 多级注入器详解及实例
2016/10/30 Javascript
AngularJS中$apply方法和$watch方法用法总结
2016/12/13 Javascript
easyui 中的datagrid跨页勾选问题的实现方法
2017/01/18 Javascript
微信小程序 首页制作简单实例
2017/04/07 Javascript
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
JS按钮闪烁功能的实现代码
2017/07/21 Javascript
ES6下子组件调用父组件的方法(推荐)
2018/02/23 Javascript
转换layUI的数据表格中的日期格式方法
2019/09/19 Javascript
Openlayers实现图形绘制
2020/09/28 Javascript
git使用.gitignore设置不生效或不起作用问题的解决方法
2017/06/01 Python
Python学生信息管理系统修改版
2018/03/13 Python
python用BeautifulSoup库简单爬虫实例分析
2018/07/30 Python
python  创建一个保留重复值的列表的补码
2018/10/15 Python
对Python3.x版本print函数左右对齐详解
2018/12/22 Python
Tensorflow实现部分参数梯度更新操作
2020/01/23 Python
Python使用jpype模块调用jar包过程解析
2020/07/29 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
2021/01/25 Python
经理管理专业自荐信范文
2013/12/31 职场文书
协议书范本
2014/04/23 职场文书
设计师求职信模板
2014/05/06 职场文书
2014小学教师个人工作总结
2014/11/10 职场文书
网站文案策划岗位职责
2015/04/14 职场文书
汽车车尾标语大全
2015/08/11 职场文书
高二语文教学反思
2016/02/16 职场文书
基于MySql验证的vsftpd虚拟用户
2021/11/07 MySQL