了解K神(kennethreitz)是从其牛逼的requests库开始的,号称Python顶级程序员之一。大神的作品很多,也有一个很励志的传奇,从一个胖胖的邋遢码农,励志减肥,到一个热爱摄影和音乐,感觉像个艺术家的程序员。今天,就让我们一起看看大神对写Python代码的一些建议吧!1.可变和不可变类型Python有两种内置或用户定义的类型。可变类型是允许就地修改其内容的类型。典型的可变列表是列表和字典:所有列表都有可变方法,如list.append()或list.pop()并且可以就地修改。字典也是如此。不可变类型不提供更改其内容的方法。例如,设置为整数6的变量x没有“递增”方法。如果要计算x+1,则必须创建另一个整数并为其命名。体验这个Best方法,选择是使用map函数,可以将内置函数类型str映射到迭代器范围。这会生成一个地图对象,然后可以像其他示例一样将其连接起来。在某些情况下,map函数甚至可能比列表理解更快、更紧凑!2、一行一个语句,一行一个语句,尤其是复杂的逻辑表达式,会清晰易读。虽然一些复合语句(如列表推导式)因其简洁和表达力而被允许和赞赏,但在同一行代码中使用两个不连贯的语句是不好的做法3.显式代码Python非常棘手,有时会被滥用一些黑魔法,过度使用技能并失去代码本身的直观性。有几种方法可以更新字典。dict(**locals)的初衷是生成一个新的字典并返回。在上面的好代码中,x和y是从调用者显式接收的,并返回一个显式字典。使用此功能的开发人员将通过阅读第一行和最后一行来确切地知道要做什么,而不是像坏例子那样含糊不清和间接。4.返回值关于返回值的处理当函数的复杂度增加时,在函数体中使用多个return语句的情况并不少见。然而,为了保持清晰的意图和可持续的可读性,最好避免从正文中的许多输出点返回有意义的值。函数中返回值主要有两种情况:函数正常处理时返回的结果,以及指示输入参数错误或函数无法完成其计算或任务的任何其他原因的错误情况defcomplex_function(a,b,c):ifnota:returnNoneifnotb:returnNone#Raisinganexceptionmightbebetter一些复杂的代码试图从a,b和c计算x抵制如果成功则返回x的诱惑ifnotx:x的一些Plan-B计算returnxOne返回值x的单个退出点将有助于维护代码。当一个函数在其正常运行过程中有多个主出口时,调试返回的内容变得困难,因此最好保留一个出口点。这也将有助于分解一些代码路径,如果函数有多个退出点,您的代码需要进一步重构。最后,如果你的时间不是很紧,又想快速提高,最重要的是不要怕吃苦。我建议你联系魏:762459510。那真的很好。许多人进步很快。你需要不怕吃苦。!大家可以去add看看~5.解包如果知道list或者tuple的长度,可以通过解压的方式为其元素指定一个名称。例如enumerate()将为列表中的每一项提供一个包含两个元素的元组,一个下标和一个值:forindex,iteminenumerate(some_list):#dosomethingwithindexanditem你也可以用它来交换变量:a,b=b,a嵌套解包同样适用于Py3.x:a,(b,c)=1,(2,3)a,*rest=[1,2,3]a=1,rest=[2,3]a,*middle,c=[1,2,3,4]a=1,middle=[2,3],c=46.在集合中搜索一个项目有时我们需要搜索为了一系列的事情。让我们看看两个选项:列表和集合。以下面的代码为例:s=set(['s','p','a','m'])l=['s','p','a','m']deflookup_set(s):return's'insdeflookup_list(l):return's'inl即使两个函数看起来一样,因为lookup_set利用了Python中的集合是哈希表这一事实,介于两者之间的查找性能非常不同。要确定某个项目是否在列表中,Python必须遍历每个项目,直到找到匹配的项目。最后,如果你的时间不是很紧,又想快速提高,最重要的是不要怕吃苦。我建议你联系魏:762459510。那真的很好。许多人进步很快。你需要不怕吃苦。!大家可以去添加看看~这个很费时间,尤其是长列表。另一方面,集合中项目的散列将告诉Python在集合中的何处寻找匹配项。因此即使是大型集合也可以快速完成搜索7.检查变量是否等于常量您不需要明确地将值与True或None或空进行比较-您只需将其添加到if语句中。8.访问字典元素不要使用dict.has_key()方法访问字典元素。相反,使用语法或传递默认参数,例如xindict,dict.get(k,default_value)9.过滤列表是一种不好的做法,或者是初学者经常犯的错误。一个好的做法是使用filter函数,因为Python3.0返回一个迭代器而不是列表。如果你真的需要一个列表,只需在它前面添加一个list()!10.ReadFromaFile使用语法从文件读取,会自动帮你关闭文件,一定要用withopen11.LineContinuationscodelengthcontinuation当我们的逻辑代码行长于可接受的限制时(PEP8规定79个字符),需要拆分成多条物理行。如果行的最后一个字符是反斜杠,Python解释器将连接连续的行。这在某些情况下很有用,但由于其脆弱性,通常应避免使用。在反斜杠中断代码后添加到行尾的空格可能会产生意外结果。Bad:my_very_big_string="""很长一段时间我习惯早睡。有时,当我熄灭蜡烛时,我的眼睛会很快闭上,以至于我连说“我要睡觉了”的时间都没有."""fromsome.deep.module.inside.a.moduleimporta_nice_function,another_nice_function,yet_another_nice_functionGood:my_very_big_string=("很长一段时间我习惯早睡。有时,""当我把我的蜡烛,我的眼睛会很快闭上“”以至于我什至没有时间说“我要睡觉了。””)来自some.deep.module.inside.a.moduleimport(a_nice_function,another_nice_function,yet_another_nice_function)更多好的做法是在元素周围使用圆括号。在一行的末尾留下一个未闭合的圆括号,Python解释器将添加下一行直到圆括号关闭。同样的行为适用于大括号和方括号。最后,如果你的时间不是很紧,想要快速进步,最重要的是不要害怕的艰辛。我建议你联系魏:762459510。那真的很好。许多人进步很快。你需要不怕吃苦。!可以加进去看看~大神的指点很有用。通过这些建议的动作,我们需要慢慢思考为什么要这样写,背后的原理是什么!通过这些建议,了解大神对Python代码的思考,慢慢领悟Python之美,升华自己的Python技能!
