这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 扣丁学堂Python培训之浅谈写码时应该缩进使用tab还是空格

共3条 1/1 1 跳转至

扣丁学堂Python培训之浅谈写码时应该缩进使用tab还是空格

助工
2020-09-24 17:11:40     打赏

  在目前生活中,随着互联网技术要求越来越高,也导致程序员们不断的学习才能进步,比如最简单的代码缩进问题,对于程序员来说,其实Tab和空格远远不只是“立场”问题那么简单。在不同的编辑器里tab的长度可能不一致,所以在一个编辑器里用tab设置缩进后,在其它编辑器里看可能缩进就乱了。空格不会出现这个问题,因为空格就占一个字符的位置。

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


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


  classMyForm(Form):


  value1=StringField('value1')


  value2=StringField('value2')


  value3=StringField('value3')#这行用的是Tab缩进


  submit=SubmitField('Submit')


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


  value3=StringField('value3')


  IndentationError:unexpectedindent


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


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


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


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


  空格代替Tab的好处:


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


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


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


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


  以上就是关于扣丁学堂Python培训之写码时应该缩进使用tab还是空格的详细介绍,最后想要了解更多关于Python发展前景趋势,请关注扣丁学堂官网、微信等平台,扣丁学堂IT职业在线学习教育平台为您提供权威的Python视频教程系统,通过千锋扣丁学堂金牌讲师在线录制的第一套自适应Python在线视频课程系统,让你快速掌握Python从入门到精通开发实战技能。扣丁学堂Python技术交流群:816572891。



工程师
2020-09-24 23:42:08     打赏
2楼

感谢分享


工程师
2020-09-27 23:28:32     打赏
3楼

总结的不错


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]