Python代码的这5个坏习惯很容易养成。不要养成这些坏习惯。几个坏习惯。有些习惯会使错误隐藏起来,难以追踪。当然有些也没有错,但个人觉得不够优雅。注:示例代码是在Python3.6环境下编写的。1.使用列表作为函数的默认参数。看下面的例子:正常情况下,我们期望的结果应该是这样的,但是当我们执行代码的时候,只会得到这样的结果,这与期望不符。为什么?因为Python列表是可变对象,函数参数是引用,所以第二次调用func方法时,b中已经有元素1,调用后b终于有了1和2两个元素.示例中的func方法比较简单。当你发现问题的时候,只要看一眼就能找到根本原因。但是,如果是在比较复杂的方法中,你可能粗心忽略了这一点,就会遇到一些莫名其妙的问题。所以,当我们想为函数设置默认参数时,不要使用可变对象。上面的代码改成这样就OK了。执行后,得到预期的结果。2.文件操作很多初学Python的小伙伴在做文件操作的时候很容易写出类似的代码。这个没问题,但是我们不需要手动去维护文件资源,比如交给上下文管理器关闭这样的操作就行了。那看起来不是很清爽。3.捕获所有异常就像上面说的,有时候为了快速完成功能,很容易不顾一切地捕获Exception。这可能会捕获键盘中断(CTRL+C)或断言错误(AsstionError)等异常。捕获未定义的异常有时会导致我们的程序出现莫名其妙的问题,我们应该避免这样做。准确的做法是根据上下文捕获ValueError、AttributeError、TypeError等具体的异常,然后做相应的错误处理,比如打印日志。4.忽略Python的for...else语法开发我们很容易遇到类似的需求,在一个列表中,判断某个特定元素是否存在。比如下面的代码就是判断列表中是否有奇数。在这里,我们使用标志is_odd_exist,默认为False。当找到奇数时,将其设置为True并跳出循环。这样写没有错,但是我们可以换一种方式。先介绍下Python的for...else语法。当for循环正常结束时(即不是通过break结束),就会执行else中的语句。在这里,我们使用了与C、PHP等其他语言不同的方法,来完成同样的功能,而且看起来代码也简单了很多。5.使用key遍历字典Python初学者很容易写出这样的代码。同样,这没问题,但似乎不直观。遍历字典的时候,其实可以直接把key-value的信息取出来,像这样:这样的话,就显得更清晰了。上面提到的一些观点各有成见,我们不要求大家接受,选择合理使用即可。如果您有任何其他建议,请与我们分享。
