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爬虫之urllib2使用指南
Nov 05 Python
python内存管理分析
Apr 08 Python
在Python中测试访问同一数据的竞争条件的方法
Apr 23 Python
python中matplotlib实现最小二乘法拟合的过程详解
Jul 11 Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
Apr 30 Python
基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能
Jul 15 Python
使用NumPy读取MNIST数据的实现代码示例
Nov 20 Python
解决安装pyqt5之后无法打开spyder的问题
Dec 13 Python
opencv python图像梯度实例详解
Feb 04 Python
简单介绍一下pyinstaller打包以及安全性的实现
Jun 02 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
Jun 04 Python
使用pytorch实现论文中的unet网络
Jun 24 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
Yii框架中memcache用法实例
2014/12/03 PHP
PHP之正则表达式捕获组与非捕获组(详解)
2015/07/29 PHP
1亿条数据如何分表100张到Mysql数据库中(PHP)
2015/07/29 PHP
phalcon框架使用指南
2016/02/23 PHP
php+MySql实现登录系统与输出浏览者信息功能
2016/07/01 PHP
JS option location 页面跳转实现代码
2008/12/27 Javascript
利用jQuery实现一个简单的表格上下翻页效果
2017/03/14 Javascript
微信小程序的分类页面制作
2017/06/27 Javascript
Vue单文件组件的如何使用方式介绍
2017/07/28 Javascript
利用nvm管理多个版本的node.js与npm详解
2017/11/02 Javascript
Angular实现较为复杂的表格过滤,删除功能示例
2017/12/23 Javascript
详解vue2.0 不同屏幕适配及px与rem转换问题
2018/02/23 Javascript
vue 表单输入格式化中文输入法异常问题
2018/05/30 Javascript
JS实现同一DOM元素上onClick事件与onDblClick事件并存的解决方法
2018/06/07 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
2020/12/02 Vue.js
video.js添加自定义组件的方法
2020/12/09 Javascript
在Python中实现替换字符串中的子串的示例
2018/10/31 Python
python 使用 requests 模块发送http请求 的方法
2018/12/09 Python
Python输出\u编码将其转换成中文的实例
2018/12/15 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
2019/07/01 Python
Python 中的pygame安装与配置教程详解
2020/02/10 Python
Python多重继承之菱形继承的实例详解
2020/02/12 Python
Python实现读取并写入Excel文件过程解析
2020/05/27 Python
Pycharm配置lua编译环境过程图解
2020/11/28 Python
HTML5表格_动力节点Java学院整理
2017/07/11 HTML / CSS
html5与css3小应用
2013/04/03 HTML / CSS
DJI大疆无人机官方商城:全球领先的无人飞行器研发和生产商
2016/12/21 全球购物
莫斯科珠宝厂官方网站:Miuz
2020/09/19 全球购物
最新大学生自我评价
2013/09/24 职场文书
优秀员工自荐信范文
2013/10/05 职场文书
计算机个人求职信范例
2014/01/24 职场文书
工会2014法制宣传日活动总结
2014/11/01 职场文书
2015年安全生产工作总结范文
2015/04/02 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
JavaScript实现酷炫的鼠标拖尾特效
2022/02/18 Javascript
Java中的Kafka为什么性能这么快及4大核心详析
2022/09/23 Java/Android