python中常见编写代码的陷阱

  • !别忘了冒号。一定要记住在复合语句首行末尾输入“:”(if、while、for等的第一行)。

  • 从第1行开始。要确定顶层(无嵌套)程序代码从第1行开始。

  • 空白行在交互模式提示符下很重要。模块文件中复合语句内的空白行都会被忽视,但是,当你在交互模式提示符下输入代码时,空白行则是会结束语句。换句话来说,空白行是告诉交互模式命令行,你已完成复合语句;如果你想继续,就不要在…提示符下(或IDLE中)按Enter键,直到完成为止。

  • !缩进要一致。避免在块缩进中混合制表符和空格,除非你知道文字编辑器如何处理制表符。否则,如果编辑器把制表符也算成空格,你在编辑器中所见到的就不一定是Python所见到的。对任何块结构的语言来说都是如此,不仅仅是Python而已;如果下一位程序员对制表符有不同的设置,他就无法了解代码的结构。每个块全部使用制表符或空格,这样比较安全。

  • !不要在Python中写C代码。给C/C++程序员的提醒:在if和while首行,不用再测试两侧输入括号(例如,if(X==1):)。如果喜欢,你也可以这么做(任何表达式都可包含在括号中),但是在这种环境下完全是多余的。此外,不要以分号终止所有的语句。在Python中,这么做在技术上也是合法的。但是完全没用,除非把一个以上的语句放在同一行中(每行的结尾通常就是该语句的终结)。此外,记住不要在while循环测试中嵌入赋值语句,而且不要在块周围使用{}(改为一致地缩进嵌套程序代码块)。

  • 使用简单的for循环,而不是while或range。另一件要提醒的事:比起while或者range式的计数器循环来讲,简单的for循环(例如,for x in seq:)总是比较容易写,运行起来也更快。

  • !要注意赋值语句中的可变对象。在多重目标赋值语句中(a = b = []),以及在增强指定语句中(a += [1, 2]),使用可变对象时,要小心一点,在这两种情况下,在原处的修改会影响其他变量。

  • 不要期待在原处修改对象的函数会返回结果。比如list.append和list.sort方法(实际上并非没有返回值,返回值为None),请不要尝试写mylist = mylist.append(X)这样的语句,会将mylist指定为None,而不是修改后的列表。

  • 一定要使用括号调用函数。必须在函数名称后面加括号才能对它进行调用,无论它是否带有参数。

  • 不要在导入和重载中使用扩展名或路径。在import语句中省略目录路径和文件字尾(例如,要写import mod,而不是import mod.py)。因为模块可能有.py以外的其他后缀名(例如.pyc),硬编码的后缀名不仅是不合法的语法,也说不通。任何平台特定的目录路径语法是属于模块搜索路径设置的,而不是import语句。

以上内容来自Python学习手册第三部分第15章,内容有删减。
打!的条目是我在学习中常常犯错的地方。

你可能感兴趣的:(python)