python系列教程173——最常犯的一些错误
Posted 人工智能AI技术
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python系列教程173——最常犯的一些错误相关的知识,希望对你有一定的参考价值。
朋友们,如需转载请标明出处:https://blog.csdn.net/jiangjunshow
声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值得阅读!想要学习AI技术的同学可以点击跳转到我的教学网站。PS:看不懂本篇文章的同学请先看前面的文章,循序渐进每天学一点就不会觉得难了!
我们来看一下初学者编写Python程序最常犯的一些错误。
•别忘了冒号。一定要记住在复合语句首行末尾输入“:”(if、while、for等的第一行)。你可能一开始会忘记(我就忘过,过去几年我那3000多位学生多数也会)。
•从第1行开始。要确定顶层(无嵌套)程序代码从第1行开始。
•空白行在交互模式提示符下很重要。模块文件中复合语句内的空白行都会被忽视,但是,当你在交互模式提示符下输入代码时,空白行则是会结束语句。
•缩进要一致。避免在块缩进中混合制表符和空格。否则,如果编辑器把制表符也算成空格,你在编辑器中所见到的就不一定是Python所见到的。对任何块结构的语言来说都是如此,不仅仅是Python而已:如果下一位程序员对制表符有不同的设置,他就无法了解代码的结构。
•不要在Python中写C代码。给C/C++程序员的提醒:在if和while首行,不用在两侧输入括号(例如,if (X==1):)。如果喜欢,你也可以这么做(任何表达式都可包含在括号中),但是在python中完全是多余的。此外,不要以分号终止所有的语句。在Python中,这么做在技术上也是合法的。此外,记住不要在while循环中嵌入赋值语句,而且不要在块周围使用(改为一致地缩进嵌套程序代码块)。
•使用简单的for循环,而不是while或range。另一件要提醒的事:比起while或者range式的计数器循环来讲,简单的for循环(例如,for x in seq:)总是比较容易写,运行起来也更快。因为Python会在内部为简单的for循环处理索引运算,因此有时会比等效的while快两倍。
•不要期待在原处修改对象的函数会返回结果。我们以前也碰过这一点:之前介绍过的list.append和list.sort方法这种的修改运算,并不会有返回值(除了None)。所以在调用时不要对其结果进行赋值。初学者可能会写出mylist = mylist.append(X)这样的语句,试着取得append的结果,结果却把mylist指定为None,而不是修改后的列表。当你尝试以排序的方式遍历字典元素时,例如,for k inD.keys().sort():这类代码。用keys方法建立键列表,而sort方法可以用来排序。但是因为sort方法返回None,循环就失败了。因为字典键是视图而不是列表。要正确编写这段代码,可以使用较新的sorted内置函数,来返回排序后的列表,也可以把方法调用放在外边:先执行Ks = list(D.keys()),然后执行Ks.sort(),最后执行k in Ks:。
•一定要使用括号调用函数。必须在函数名称后面加括号才能对它进行调用,无论它是否带有参数[例如,使用function(),而不是function]。初学者经常输入file.close来关闭文件,而不是file.close()。第一个没有括号的版本也会成功,但是它并没有关闭文件。
•不要在导入和重载中使用扩展名或路径。在import语句中省略目录路径和文件字尾(例如,要写import mod,而不是import mod.py)。因为模块可能有.py以外的其他后缀名(例如,.pyc)。任何平台特定的目录路径语法是属于模块搜索路径设置的,而不是import语句。
以上是关于python系列教程173——最常犯的一些错误的主要内容,如果未能解决你的问题,请参考以下文章