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中使用不同编码读写txt文件详解
May 28 Python
Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
Sep 21 Python
Python通过命令开启http.server服务器的方法
Nov 04 Python
APIStar:一个专为Python3设计的API框架
Sep 26 Python
Python 输入一个数字判断成绩分数等级的方法
Nov 15 Python
一百行python代码将图片转成字符画
Feb 19 Python
详解python项目实战:模拟登陆CSDN
Apr 04 Python
Python 使用 attrs 和 cattrs 实现面向对象编程的实践
Jun 12 Python
对Python中小整数对象池和大整数对象池的使用详解
Jul 09 Python
python Django编写接口并用Jmeter测试的方法
Jul 31 Python
python系列 文件操作的代码
Oct 06 Python
python中判断文件结束符的具体方法
Aug 04 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
用PHP和ACCESS写聊天室(二)
2006/10/09 PHP
PHP数组无限分级数据的层级化处理代码
2012/12/29 PHP
PHP防止表单重复提交的几种常用方法汇总
2014/08/19 PHP
PHP实现的简单日历类
2014/11/29 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
2019/04/10 PHP
javascript实现颜色渐变的方法
2013/10/30 Javascript
js showModalDialog弹出窗口实例详解
2014/01/07 Javascript
node.js操作mysql(增删改查)
2015/07/24 Javascript
JS模仿编辑器实时改变文本框宽度和高度大小的方法
2015/08/17 Javascript
jquery 判断selection range 是否在容器中的简单实例
2016/08/02 Javascript
使用jsonp实现跨域获取数据实例讲解
2016/12/25 Javascript
jQuery+ajax的资源回收处理机制分析
2017/01/07 Javascript
jQuery快速实现商品数量加减的方法
2017/02/06 Javascript
Ajax实现不刷新取最新商品
2017/03/01 Javascript
微信小程序实现鼠标拖动效果示例
2017/12/01 Javascript
分享5个顶级的JavaScript Ajax组件库
2018/09/16 Javascript
单页面vue引入百度统计的使用方法示例详解
2018/10/13 Javascript
[02:44]DOTA2英雄基础教程 钢背兽
2013/12/19 DOTA
[01:05:40]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第三场
2014/05/24 DOTA
python更改已存在excel文件的方法
2018/05/03 Python
python pytest进阶之xunit fixture详解
2019/06/27 Python
Python爬虫之urllib基础用法教程
2019/10/12 Python
css3弹性盒模型实例介绍
2013/05/27 HTML / CSS
基于CSS3 animation动画属性实现轮播图效果
2017/09/12 HTML / CSS
Application Cache未缓存文件无法访问无法加载问题
2014/05/31 HTML / CSS
澳大利亚第一的设计师礼服租赁网站:GlamCorner
2017/08/13 全球购物
PHP解析URL是哪个函数?怎么用?
2013/05/09 面试题
什么时候用assert
2015/05/08 面试题
vue实现倒计时功能
2021/03/24 Vue.js
高中生自我评价个人范文
2013/11/09 职场文书
好人好事事迹材料
2014/02/12 职场文书
新闻报道策划方案
2014/06/11 职场文书
公司应聘自荐书
2014/06/14 职场文书
党的群众路线教育实践活动调研报告
2014/11/03 职场文书
mysql 8.0.24 安装配置方法图文教程
2021/05/12 MySQL
Mysql中 unique列插入重复值该怎么解决呢
2021/05/26 MySQL