美文网首页Linux+Python+Java
空格还是Tab?用Vim写Python缩进的正确姿势

空格还是Tab?用Vim写Python缩进的正确姿势

作者: 姜乐衣 | 来源:发表于2016-07-09 10:59 被阅读7544次

首先讨论一下Tab和空格。

在硅谷第三季中,Richard因为用Tab还是空格的问题和本来情投意合的女孩吵架,甚至于决裂。很多人会觉得这是调侃程序员为了一些毫无意义的小事情“站队”,强迫症。

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

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

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

1 class MyForm(Form):
2     value1 = StringField('value1')
3     value2 = StringField('value2')
4     value3 = StringField('value3')        #这行用的是Tab缩进
5     submit = SubmitField('Submit')

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

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

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

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

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

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

可是每次缩进都要按好多下空格好烦!难道要抛弃用Vim转投各种IDE吗?

其实,只要掌握好正确的姿势,在使用前配置好.vimrc,就可以玩转Tab啦。

下面结合具体属性来讲解。

set shiftwidth=4 "这个量是每行的缩进深度,一般设置成和tabstop一样的宽度"
set tabstop=4 "设置Tab显示的宽度,Python建议设置成4"

"刚才说过Tab和空格是不同的,虽然你可以在自己的代码中全部使用Tab"
"但是如果你将你的代码分享给使用空格的朋友,就会带来很多麻烦"
"那么设置下面这行就可以将Tab自动展开成为空格"
set expandtab
"如果只想在Python文件中将Tab展开成空格,就改换成下面这句"
autocmd FileType python set expandtab

"上面的一些配置已经可以让你避免编译出现错误的问题了"

"不过下面还有一些配置是建议同学们根据需要加上的"
set smartindent "智能缩进"
set cindent "C语言风格缩进"
set autoindent "自动缩进"


相关文章

  • 空格还是Tab?用Vim写Python缩进的正确姿势

    首先讨论一下Tab和空格。 在硅谷第三季中,Richard因为用Tab还是空格的问题和本来情投意合的女孩吵架,甚至...

  • Python代码格式

    Python缩进使用4个空格,因为 Python 用缩进来取代了 {} , 而空格或是 tab 都是合乎语法的缩进...

  • vim 取消换行 自动tab缩进

    vim 取消换行自动 tab缩进。 空格

  • vim编辑器中tab和空格的相互转化

    vim编辑器中tab和空格的问题 根据PEP8编码规范,python代码中的缩进最好使用四个空格。 1.设置vim...

  • if 条件

    if条件 代码的缩进为一个tab键,一般都用tab 或者四个空格 在python 编程中 Tab 不要跟空格混着用...

  • Android Studio Setting

    1.显示空格。 我习惯显示空格,这样就能看出缩进是tab缩进还是空格缩进。建议使用空格缩进。Settings-->...

  • CSS-SCSS代码规范

    1 注释规范 2 缩进/空格/换行规范 每个缩进使用4个空格,不允许使用 2 个空格 或 tab//正确.samp...

  • python学习过程中的注意点

    input返回为str型数据,需要进行数据转化 python中缩进可以在文本编辑器中直接用Tab,Tab和空格混用...

  • 如何将vim中的Tab键设为4个空格?

    vim编辑器中,Tab键默认定义为8个空格键,然而对于编写Python代码,为了良好的代码风格以及可读性,需要缩进...

  • 2.1 If 判断

    语法格式: 注意:tab键在pycharm里面相当于4个空格,python里面的缩进是用四个空格来表示的。 接收用...

网友评论

    本文标题:空格还是Tab?用Vim写Python缩进的正确姿势

    本文链接:https://www.haomeiwen.com/subject/zhyrjttx.html