我收集了一些Python新手开发者写的代码中所见到的不规范但偶尔又很微妙的问题。
该文章为了帮助那些新手开发者渡过写出丑陋的Python代码的阶段。
但通常这些反模式会造成代码缺乏可读性、更容易出bug且不符合Python的代码风格。
迭代range的使用
Python编程新手喜欢使用range来实现简单的迭代,在迭代器的长度范围内来获取迭代器中的每一个元素:
应该牢记:range并不是为了实现序列简单的迭代。相比那些用数字定义的for循环,虽然用range实现的for循环显得很自然,但是用在序列的迭代上却容易出bug,而且不如直接构造迭代器看上去清晰:
range的滥用容易造成意外的大小差一(off-by-one)错误,这通常是由于编程新手忘记了range生成的对象包括range的第一个参数而不包括第二个,类似于java中的substring和其他众多这种类型的函数。那些认为没有超出序列结尾的编程新手将会制造出bug:
不恰当地使用range的常见理由:
1.需要在循环中使用索引。
这并不是一个合理的理由,可以用以下方式代替使用索引:
2.需要同时迭代两个循环,用同一个索引来获取两个值。
这种情况下,可以用zip来实现:
3.需要迭代序列的一部分。在这种情况下,仅需要迭代序列切片就可以实现,注意添加必要的注释注明用意