企业公告

幸福宝app官网入口丝瓜|方舟生存进化铁斧怎么做 手机版铁斧制作方法 火影忍者ol手游英雄副本7-8攻略 英雄副本7-8怎么打_幸福宝app官网入口丝瓜 王者荣耀自走棋博学者之怒装备图鉴-幸福宝app官网入口丝瓜 航海王燃烧意志怎么玩 海贼王新手玩法攻略详解 云顶之弈手游虚空行者享有星神和破法战士的羁绊:幸福宝app官网入口丝瓜 Apex英雄怎么触发彩蛋 Apex英雄彩蛋在哪里 幸福宝app官网入口丝瓜:一起来捉妖6月6日每日一题答案 微信每日一题答案 恙化装甲10月17日限量删档测试开启 快来好游快爆获得测试资格吧! 皇室战争选卡挑战!选最重要的两个法术 幸福宝app官网入口丝瓜:决战平安京源氏长弓属性 源氏长弓合成公式 【玩家投稿】第五人格医生攻略 医生玩法心得解析_幸福宝app官网入口丝瓜 成语小秀才第127关答案攻略 关卡答案攻略详解:幸福宝app官网入口丝瓜 幸福宝app官网入口丝瓜|阴阳师斗技后手控速心得分享 可克制一速双拉双推 方舟生存进化天使翅膀皮肤怎么得 方舟生存进化手机版天使翅膀皮肤获取方法_幸福宝app官网入口丝瓜 【幸福宝app官网入口丝瓜】阴阳师桌面版什么时候出 桌面版下载使用详解 幸福宝app官网入口丝瓜|泰拉瑞亚Maxx的传说第33期 同人漫画汉化版 幸福宝app官网入口丝瓜_QQ飞车手游新模式48人赛 新模式淘汰赛怎么玩 单枪匹马怎么玩 单枪匹马新手玩法攻略:幸福宝app官网入口丝瓜 幸福宝app官网入口丝瓜_阴阳师蜜桃芥子阵容怎么搭配 蜜桃芥子斗技阵容推荐 CF手游生化金字塔立柱作战方案 刷分真的很简单【幸福宝app官网入口丝瓜】

产品展示PRODUCT

大师原酌

您当前的位置首页 > 产品展示 > 百年枝江

Python编程中的反模式实例分析

本文摘要:Python编程中的反模式实例分析这篇文章主要讲解了Python编程中的反模式,详尽描写了反模式的有害并以实例形式具体分析了更容易导致的易错点,对于Python自学来说具备一定的参照糅合价值,必须的朋友可以参照下本文实例描写了Python编程中的反模式。

幸福宝app官网入口丝瓜

Python编程中的反模式实例分析这篇文章主要讲解了Python编程中的反模式,详尽描写了反模式的有害并以实例形式具体分析了更容易导致的易错点,对于Python自学来说具备一定的参照糅合价值,必须的朋友可以参照下本文实例描写了Python编程中的反模式。共享给大家可供大家参照。具体分析如下:Python是时下最热门的编程语言之一了。

简练而富裕表达力的语法,两三行代码往往就能解决问题十来行C代码才能解决问题的问题;非常丰富的标准库和第三方库,大大节约了研发时间,使它沦为那些对性能没苛刻拒绝的研发任务的选用;强劲而活跃的社区,齐全的文档,也使很多编程的初学者自由选择了它作为自己的第一门编程语言。甚至有国外的报导称之为,Python早已沦为了美国顶尖大学里最热门的编程入门教学语言。1/11要懂一门编程语言实属容易,在初学阶段,就缺失一些错误的作法,对今后的了解自学至关重要。

有一位叫ConstantineLignos的博主,他是宾夕法尼亚儿童医院放射线研究部门的博士后研究员,他最近编写了一篇很有意义的文章,列出了初学Python的学生们最常犯的错误,并对这些错误展开了分类和剖析,其内容提纲挈领,十分有一点每个Python初学者自学。这篇文章得出了一些在Python初学者中很少见的反模式,反模式一般来说是指那些不合乎习惯或者不会造成差劲后果的用法。

Lignos把他总结的反模式分为了四大类——递归、性能、变量的漏洞和编程风格。下面我们一一来看一个例子,解读这些反模式究竟“反”在什么地方。2/11一、递归当我们必须非常简单递归一个数量范围的时候,Python给了我们一个十分好用的函数:range。

幸福宝app官网入口丝瓜

Lignos仔细观察到有些初学者讨厌用range来递归列表的下表,像下面这种形式:拷贝代码代码如下:foriinrange(len(alist)):printalist[i]3/11这代码现在还没什么问题,但早已不合乎Python的习惯了。但下面的代码就有问题了:拷贝代码代码如下:alist=[her,name,is,rio]foriinrange(0,len(alist)-1):#漏掉了最后一个printi,alist[i]4/11我们可以看一下Python官方文档range的示例:拷贝代码代码如下:range(1,11)[1,2,3,4,5,6,7,8,9,10]range的右区间是不包括在内的,如果不受了直觉或其他编程语言的影响,再行减半1就不该了。Lignos还列出了其他几种错误的递归模式,我们只要忘记,range应当用在递归一个数量范围。

5/11二、性能Lignos得出了两段代码:拷贝代码代码如下:lyrics_list=[her,name,is,rio]words=make_wordlist()forwordinwords:ifwordinlyrics_list:#线性时间6/11printword,isinthelyrics和拷贝代码代码如下:lyrics_set=set(lyrics_list)words=make_wordlist()forwordinwords:ifwordinlyrics_set:#常数时间7/11printword,isinthelyrics哪种模式效率更高?Lignos注解早已得出了答案。注解的意思是,辨别一个元素否在一组元素中不存在,用于list的算法复杂度是O(n),而用于set的算法复杂度是O(1)。那否set总有一天是高于list?在其他情况下,应当用哪个数据结构?Python官方Wiki有一份专门各个数据结构操作者的时间复杂度的文档供参考,告诉参照这份文档比答案本身更加最重要。

幸福宝app官网入口丝瓜

至于为什么,只有Python的源码才能告诉他我们。8/11三、变量的漏洞初学者往往不会假设一些不应假设的前提,对一些出现异常流程考虑不周。Lignos也给了一个例子:拷贝代码代码如下se4:foridx,valueinenumerate(y):ifvaluemax_value:breakprocessList(y,idx)9/11这里y如果是机的,那就出有问题了,因为idx显然得到定义,最后我们不会获得一个NameError的出现异常。

较为好的作法是给idx一个配置文件的错误值,在C语言里面我们常常讨厌用-1。下面的代码就考虑到得较为全面:拷贝代码代码如下:deffind_item(item,alist):#对Python来说None比-1有可能更佳点result=-1foridx,other_iteminenumerate(alist):10/11ifother_item==item:result=idxbreakreturnresult11/11四、代码风格Python有一份代码风格指导文档PEP8,这些规则都是有道理的。当初学者不明白为什么的时候,最差的作法就是尽可能遵从它,等到有更加了解的解读了就不会豁然开朗,同事也不会明白什么时候可以超越规则。Lignos提到了这份文档的一些例子,比如,如何测试一个变量否为空,如果测试一个变量否为None等等。

以上分析了这篇文章中的一些例子,如果期望全面理解,请求查阅原文。想懂一门编程语言,学会语法是远远不够的,必需逐步解读语言所倚赖的CPU体系结构、编译器/解释器/虚拟机等内容。

Lignos这篇文章虽然没了解剖析Python的构建,但是对于入门者的协助是非常明显的,当初学者有了一定经验后,对一些问题都可以做到了解挖出,引向Python构建层面的问题。


本文关键词:幸福宝app官网入口丝瓜

返回首页