作为python的新手,大家在上手python的时候都会或多或少的接触到一些rookie mistake,也就是菜鸟级别的错误。小编作为一个老司机也是从这些错误中一点一点的积累经验,才慢慢的能够熟练的使用python。

遇到错误不可怕,关键是要学会如何去避免犯这些错误。今天小编就带领大家看一下作为python新手最常见的几个错误,希望大家能够在学习的过程中,尽量的去避免这些错误。

1.默认可变对象

上图中,我们定义了addElement函数,在函数的形参中,我们默认使用了可变对象list。当我们连续的使用默认参数调用addElement函数时,可以发现list1只被创建了一次。由于list属于python中的可变对象,因此只在函数被定义的时候才能被创建一次,所以在调用的时候都使用的创建好的同一个list列表。而对于不可变对象,情况就不同了,如下图所示。

对于不可变对象,程序在调用函数时,将不可变对象作为默认参数进行调用。那么我们如何解决这个问题呢,我们可以利用不可变对象进行判断解决,程序如下图所示。

我们利用条件判断,list1是否为None,来决定是否创建新的列表,以此来解决上述的问题。

2.浅拷贝和深度拷贝问题

上述程序中,我们创建了字典dict1。并通过浅拷贝将dict1拷贝给dict2,通过copy库中的deepcopy(深拷贝)将dict1拷贝给dict2。可当删除dict2中的键值为’2’中的子对象的元素后,dict1中的对应元素也被删除了,而dict3却还保留。这就是浅拷贝和深拷贝的区别。如下图所示。

浅拷贝只是拷贝了父对象,但是对于子对象还是引用的同一个对象。而对于深拷贝,则是完全将子对象和父对象拷贝了一份出来,各自都有独立的子对象。

3.切记不要用官方库文件名来命名自己的文件

这里的官方库指的是大家需要import的库,这里小编统称为官方库。如下图所示。

小编创建了一个py文件,并命名为numpy。当小编想要调用大名鼎鼎的“numpy”时,此时程序报了找不到属性的“array”的错误。原因就是小编将自己的py文件命名为了numpy,程序便会自动的在当前文件里面找“array”这个属性。结果可想而知,当然找不到啦,所以小编提醒大家,千万不要将自己文件的名称与官方库撞名,不然会出大问题。

4.学会迭代器的使用

Python作为一个非常方便快捷的语言,很多元素都具有可迭代性,我们要充分利用好这些性质,如下图所示。

我们想要对list对象中的所有元素执行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的初学者,往往会搞不清楚python的关键字有哪些,从而会使得程序报错。

上述的程序中,我们利用关键字“class”来创建新的类别,这会导致程序报错,同时我们可以发现,编辑器对于关键字的提示是不同的颜色提示,告诉我们使用的是关键字,从而让我们注意不要使用关键字作为变量名称。

9.使用未定义的局部变量

对于局部变量,我们在调用它的时候需要确保它被定义,如下图所示。

对于printLocalNum1,我们没有定义localnum就调用它 ,结果必然报错,但是在printLocalNum2中,我们通过判断输入的大小,给localnum进行赋值,然后输出localnum的结果,这里,我们通过if else做了完全的判断,确保无论在何种数值(注意必须是数值)输入下,localnum都会被进行赋值,从而不会调用未定义的localnum。

10.规避++操作和—操作

Python虽然语法简单,但是对于C++、java中的++或者—的自增和自减操作是不支持的,原因是为什么呢?小编给大家一个我个人的理解,由于在python中整数是不可变类型,创建之后就不能被改变,而自增和自减就是将原先地址里的数值进行改变替换,这与python不可变类型相违背,因此就无法实现自增或者自减操作了。

以上10条信息是小编个人在N年的漫长python学习生涯中总结出来的新手常见的错误,具有很高的代表性,希望大家能够引以为戒,不要犯同样的错误。

Python老司机总结新手常见10大错误相关推荐

  1. 通达信公式转python为什么很难_[转]N年Python老司机,血泪总结新手常见10大错误...

    1.默认可变对象 上图中,我们定义了addElement函数,在函数的形参中,我们默认使用了可变对象list.当我们连续的使用默认参数调用addElement函数时,可以发现list1只被创建了一次. ...

  2. python keyerror_盘点Python 初学者最容易犯的10大错误!你中招了吗?

    对于新手,初学Python时,总会遇到这样那样的报错,想要弄懂Python错误信息的含义可能还不知道怎么做,这里列出了一些比较常见的Python报错问题,希望对于学习Python的人能够有些帮助. 发 ...

  3. python语法报错原因_python萌新最常见5大错误

    Python 小萌新最常见 5 大错误的: 1. invalid syntax 报错原因:语法错误 首先这个时候需要检查语法是否有用错,如果报错行没有发现错误,通常在相 邻行会出现问题,这个时候就要检 ...

  4. 人们对Python在企业级开发中的10大误解

    From : 人们对Python在企业级开发中的10大误解 在PayPal的编程文化中存在着大量的语言多元化.除了长期流行的C++和Java,越来越多的团队选择JavaScript和Scala,Bra ...

  5. java自动雨刷系统_自动大灯和自动雨刷你真的会用吗?老司机:新手要学会,很实用!...

    随着科技的快速发展,汽车上的各种功能性配置是越来越丰富了,它们让我们的日常用车变的更加便利,并且其中还有相当一部分能直接或者间接对保障行车安全起到相当重要的作用.不过需要注意的是,想要实现上述效果有一 ...

  6. 怎么解决python遇到问题_新手常见Python错误及异常解决处理方案

    新手常见Python错误及异常解决处理方案,异常,错误,语句,子句,代码 新手常见Python错误及异常解决处理方案 易采站长站,站长之家为您整理了新手常见Python错误及异常解决处理方案的相关内容 ...

  7. @IT老司机 云服务、BI大数据、协同办公等五大技术选型研讨会,震撼来袭!

    市场瞬息变化,每家企业都在拼命转型,当业务调整,IT能否从容应对,响应业务能否快速变化?市场提供的众多技术.产品与解决方案,究竟哪一款能够帮助企业快速应对当下发展?作为身经百战的IT老司机,您也一定见 ...

  8. python 混淆矩阵_新手常见的5个Python错误

    Python作为比较便于编写的编程语言之一,已经愈发受编程者们的欢迎.其集成开发环境(IDE)也有很多可供选择,例如Pycharm,Visual Studio,Jupyter笔记本等.无论选择哪种ID ...

  9. 避免踩坑:易盾安全老司机起底Android九大漏洞,附解决建议

    Android应用会遇到各种各样的漏洞,如何从细节上了解各种安全隐患,积极采取适当的防御措施便变得尤为重要.为了让大家对Android漏洞有一个非常全面的认识,网易云易盾资深安全工程师徐从祥为大家详细 ...

最新文章

  1. spring-boot项目优雅的http客户端工具,太香了!
  2. Interview:算法岗位面试—10.23下午—上海某科技公司算法岗位(偏机器学习算法,上市)技术面试之比赛积累、项目经验、个人未来发展
  3. Android应用签名作用,安卓app签名功能
  4. [转载] 中国好声音120720
  5. asp命令执行语句】_2分钟教你使用ASP.NET CORE创建并发布网页应用
  6. CIO/CTO都应该掌握和了解的EA(企业架构)
  7. php弹幕技术轮询,PHP实现长轮询消息实时推送功能代码
  8. IOS UI Automation 学习之常用类,方法和模拟手势
  9. 95-240-054-原理-State-FsStateBackend
  10. bzoj 2257[Jsoi2009]瓶子和燃料 数论/裴蜀定理
  11. 博文视点程序员读书节,大咖带你共读十日精彩
  12. 一键安装iis php mysql环境_Windows Server服务器环境配置:一键安装IIS+PHP+MySQL环境...
  13. 给3D打印机升级的记录( i3 Mega S)
  14. 你了解资金盘吗?那孪生兄弟产品盘你知道吗?
  15. Spring AOP的术语:
  16. 人脑的算力真的很弱吗
  17. Vue项目中出现Loading chunk {n} failed问题的解决方法
  18. css 按钮扩散效果,专治按钮效果不明显(扩散动画效果)
  19. Python--进程池与线程池
  20. git 删除远程仓库中的文件(夹)

热门文章

  1. linux基础知识3
  2. 洗礼灵魂,修炼python(8)--高效的字典
  3. Android夜间模式实践
  4. 关于markdown
  5. dojo 加载自定义module的路径问题
  6. SQL注入攻击及防范
  7. 系统--把系统BIOS中将光驱设置为第一启动盘
  8. javascript访问frame,iframe框架和href的定向
  9. 为什么物联网大数据平台,使用TDengine,可不要redis, kafka, spark等软件?
  10. 容器编排技术 -- Kubernetes Master-Node通信