zoukankan      html  css  js  c++  java
  • python 缩进讨论

    python的缩进格式是python语法中最特别的一点,很多已经习惯了其他语言的朋友再去学python的话,开始会觉的不太
    习惯,怎么看怎么都觉的别扭,也有一些朋友因为这个特别的格式与python失之交臂,认为不符合编程的风格,但是我要
    说的是恰恰是这样的格式让python变得更为强大。

    下面说说几点原因:
    1这样的格式可读性非常好
    在你看其它的语言的时候,你会发现要有很多注释才能说明问题而python却非常的精炼,只要
    核心的地方注释好来就行,可以说python本身的缩进就带了注释的功能。

    2可维护性比较好
    现在的软件开发的个人时代已经过去,正是团队合作的年代,讲究代码的共通性和维护性,团队合作可以大大的降低企业的成本,提高
    企业的生产力,而团队合作很重要的一个方面就是要保证代码的一致行,读起别人的代码感觉就像在读自己的代码一样,假设程序员小李用其他的语言
    写的代码是
    if (a == 1)
    {print 'sss'}
    ...

    而小张写的是
    if (a == 1){
    print 'ss'
    }
    ....

    而小王写的是:
    if (a == 1){print 'ss'}...

    那你如果是刚接手这个项目的一个程序来看上面的代码,你会觉的比较的迷糊,到底是什么意思呢,也许你马上接手这个项目的话也会写出
    另外一个风格来。

    而如果是用python来写的话,只有一种风格,
    if a == 1:
     print 'sss'
    ....

    这就是python提倡的大到至简的哲学思想。
    不仅是缩进格式方面,从python列表或者其他的方面你也能处处发现。

    所以python的缩进格式是根据它的哲学思想过来的,如果你是一个喜欢简单高效做事的人,会发现python非常适合你。

    实际上,严格要求(强制)的代码缩进,就像一把双刃剑,有好处也有坏处。好处显而易见,在严格要求的代码缩进之下,代码非常整齐规范,赏心悦目,提高了可读性,在一定程度上也提高了可维护性。有人说,这种约束,对团队开发非常有利,当然,也不见得,这就要看强制代码缩进的坏处。Python严格的代码缩进,对于从其他语言转过来的人(现在计算机和相关专业第一门语言一般都是C/C++或Java吧,他们的语法风格基本是一直的),可能要适应一段时间。代码缩进十分严格,如果不按规律办事,不小心的话就会出现语法错误,比如unexpected indent之类的。甚至有时也会出现逻辑错误。

    在实际情况中,由于代码缩进而出现语法错误或逻辑错误,在我看来有这两种主要情况,一是混用tab和空格缩进,二是编辑器对缩进的处理各异。这里给出一个例子,代码是这样的:

    图中使用的Notepad++编辑器,箭头代表一个tab,点表示一个空格,默认情况下不会显示箭头和点,需要专门在视图-显示符号-显示空格和制表符 中启用这个功能。如果没有箭头和点,一般认为执行结果应该是显示a,实际是显示a、c,原因很简单,1个tab,python会认为是8个空格。如果换成其他编辑器,可能print 'c'就不会和print 'b'同列显示了。对于同一个文本,简单的修改,不同编辑器做保存,也可能导致缩进出现不同。(Python idle中默认缩进的4个空格)

    我觉得为了避免因代码缩进而产生不必要的麻烦,写python代码应该,使用唯一的缩进方式(要么tab,要么空格),使用固定和统一的编辑器,此外,还应该利用好编辑器的一些特性。对于notepad++而言,除了上面所说的显示空格和制表符外,还有两个特性可以使用:一是,编辑菜单下的blank operation有两个选项tab to spacespace to tab,如果对上图的那段代码做tab to space,代码列对齐基本不变,箭头都变成点,但是执行结果是a;二是,在 设置-首选项-语言下可以选上“以空格代替”,这样以后每次按tab键都会自动转换为空格。

    参考:http://www.cnblogs.com/tt-0411/archive/2011/11/11/2245693.html

  • 相关阅读:
    +1和*2
    线段树(区间最大值和最大值的个数)
    CodeForces
    莫队算法入门(暴力而不失优雅)
    二分迷宫
    全错排公式
    C++ PAT乙 1051. 复数乘法 (15)
    C++ PAT乙 1070. 结绳(25)
    C++ PAT乙 1080. MOOC期终成绩 (25)
    C++ PAT 1073. 多选题常见计分法(20)
  • 原文地址:https://www.cnblogs.com/youxin/p/3061098.html
Copyright © 2011-2022 走看看