作为python的新手,大家在入门python的时候,或多或少都会接触到一些菜鸟级的错误,也就是菜鸟级的错误。小编作为一个老司机,也是从这些错误中一点一滴积累经验,才逐渐能够熟练使用python。遇到错误并不可怕,关键是学会如何避免犯这些错误。今天,小编就带大家来看看python初学者最常犯的错误。希望大家在学习过程中尽量避免这些错误。1.默认变量对象在上图中,我们定义了addElement函数,在函数的形参中,我们默认使用了变量对象列表。当我们使用默认参数连续调用addElement函数时,可以发现list1只创建了一次。由于list在python中是一个变量对象,在定义函数时只能创建一次,所以调用时使用同一个创建的list。对于不可变对象,情况就不同了,如下图所示。对于不可变对象,当程序调用函数时,它会调用不可变对象作为默认参数。那么我们如何解决这个问题呢?我们可以使用不可变对象来判断和解决问题。程序如下图所示。我们通过条件判断,list1是否为None来决定是否创建一个新的列表,从而解决上述问题。2.浅拷贝和深拷贝问题在上面的程序中,我们创建了一个字典dict1。并且在拷贝库中通过浅拷贝将dict1拷贝到dict2,通过deepcopy(深拷贝)将dict1拷贝到dict2。但是当dict2中key值为'2'的元素被删除时,dict1中对应的元素也被删除,但dict3仍然保留。这就是浅拷贝和深拷贝的区别。如下所示。浅拷贝只是复制父对象,但子对象仍然引用同一个对象。对于深拷贝,子对象和父对象被完全复制,各自有自己独立的子对象。3.切记不要使用官方库文件名来命名自己的文件。这里的官方库指的是大家需要导入的库。这里,小编统指官方库。如下所示。小编创建了一个py文件,并命名为numpy。当小编想调用大名鼎鼎的“numpy”时,程序报错找不到属性“array”。原因是小编把他的py文件命名为numpy,程序会自动在当前文件中寻找“array”属性。结果可想而知,当然是找不到了,所以小编提醒大家,千万不要把自己的文件名和官方库的名字撞在一起,否则会出大问题。4.学习使用迭代器Python是一门非常方便快捷的语言。许多元素是可迭代的。我们必须充分利用这些属性,如下图所示。我们要对列表对象中的所有元素执行addOne函数。传统和标准的方法是使用for循环来实现它,就像第一种方法一样。但是由于list对象是一个可迭代对象,我们完全可以利用这个优势,一行代码就可以解决这个问题,如方法二所示。所以充分利用python中一些可迭代对象的特性,会节省很多代码,让我们少犯错误。5、全局变量的频繁使用作为python的初学者,大家都喜欢在函数中定义全局变量和改变全局变量。不可否认,有些地方需要在函数中更改全局变量,但这种方法会对程序造成危害,程序的安全性变得脆弱。你需要在平时的编程中改掉这个习惯,如下图所示。在编程时,我们应该尽量以传递参数的形式使用全局变量,而不是直接修改全局变量。因为全局变量在大多数情况下是所有函数共享的,所以为了保证程序的安全,不能随便更改,除非在程序设计时需要更改全局变量。6、弄清楚是python2还是python3刚接触python的时候,可能对python2还是python3一头雾水,无法及时切换python2和python3的语法。需要明确自己使用的python版本,因为python2和python3还是有很多区别的,所以大家需要格外小心,如下图。由于python2和python3中的输出表达式不同,所以使用print函数时需要在python3版本后面加上括号才能输出。7.分不清“is”和“==”对于“is”和“==”的用法,人们通常用它来判断两个值是否相等,但是这个“相等”也在python中有不同的概念,我们需要区分是地址相等还是值相等,如下图所示。在上面的程序中,我们使用is和==来判断两个列表是否相等。可以看出is是判断两个列表的地址是否相等,==是看两个列表中的值是否一致。大家可以记住一句顺口溜:is看地址,等号看内容,这样在用is和==判断元素的时候就不会出错。8、使用python关键字作为变量名的初学者,经常会混淆python的关键字,导致程序报错。在上面的程序中,我们使用关键字“class”创建了一个新的类别,这会导致程序报错。同时我们可以发现编辑器对关键词的提示是不同颜色的提示,告诉我们正在使用关键词。因此,请注意不要使用关键字作为变量名。9.使用未定义的局部变量对于局部变量,我们需要保证在调用的时候已经定义好了,如下图所示。对于printLocalNum1,我们调用时没有定义localnum,结果会报错,但是在printLocalNum2中,我们通过判断输入的大小给localnum赋值,然后输出localnum的结果。这里,我们通过ifelse做一个完整的判断,确保无论输入什么值(注意必须是值),localnum都会被赋值,这样undefinedlocalnum就不会被调用。10、避免++操作和-操作Python虽然语法简单,但是不支持C++和java中++或-的自增自减操作。原因是为什么?个人给你一个理解,由于整型在python中是不可变类型,创建后不能改变,而自增自减是改变替换原地址中的值,与不可变相反python的类型,所以无法实现自增增减操作。以上10条信息是小编在漫长的python学习生涯N年中总结出来的新手常犯的错误。他们很有代表性。希望大家向他们学习,不要重蹈覆辙。
