知行编程网知行编程网  2022-03-18 01:00 知行编程网 隐藏边栏 |   抢沙发  49 
文章评分 0 次,平均分 0.0

了解K神( kennethreitz)是从它牛逼的requests库开始,号称最顶尖的Python程序员之一。大神有很多作品,而且还有一个非常励志的传奇故事,从一个胖胖的不修边幅的码农,励志减肥而变成一个爱摄影玩音乐的,有艺术家气息程序员。今天我们一起来拜读一下大神关于写Python代码的建议!

 

Python代码怎么写,听听顶尖Python大神 kennethreitz的建议

(图片来自www.kennethreitz.org)

 

1.Mutable and immutable types

 

Python有两种内置或用户定义的类型。

  • 可变类型是允许就地修改内容的类型。典型的可变列表是列表和词典:所有列表都有变异方法,如 list.append()或list.pop(),并且可以在适当的位置进行修改。词典也是如此。

  • 不可变类型不提供改变其内容的方法。例如,设置为整数6的变量x没有“增量”方法。如果要计算x + 1,则必须创建另一个整数并为其指定名称。

 

Python代码怎么写,听听顶尖Python大神 kennethreitz的建议

体会一下这Best这招,选择是使用map函数,它可以将内置函数类型str映射到迭代器range。这会生成一个map对象,然后就可以像其他示例一样join。在某些情况下,map函数甚至可能比列表理解更快,更简洁!

 

2.One statement per line

 

每一行一个语句,尤其在复杂的逻辑表达式的时候,这样会清晰很容易阅读。

 

Python代码怎么写,听听顶尖Python大神 kennethreitz的建议

虽然列表推导等一些复合语句因其简洁性和表达性而被允许和赞赏,但在同一行代码上有两个脱节语句是不好的做法

3.Explicit code

 

Python因为技巧性非常高,有的时候滥用一些黑魔法,过度的使用技巧而反而失去了代码本身的直观性

 

Python代码怎么写,听听顶尖Python大神 kennethreitz的建议

字典的更新有几种方法,dict(**locals)本意是想生成一个新的字典返回。在上面的好代码中,显式地从调用者接收x和y,并返回显式字典。使用此函数的开发人员通过读取第一行和最后一行就能确切地知道要做什么,而不是像坏例子的那种情况,比较晦涩难懂,不直接。

4.Returning values

 

关于返回值的处理

当函数的复杂性增加时,在函数体内使用多个return语句并不罕见。但是,为了保持清晰的意图和可持续的可读性水平,最好避免从体内的许多输出点返回有意义的值。

 

在函数中返回值有两种主要情况:函数在正常处理时返回的结果,以及指示错误输入参数的错误情况或函数无法完成其计算的任何其他原因或任务

(代码可以左右滑动)

 

当一个函数在其正常过程中有多个主要出口时,调试返回的结果变得很困难,因此最好保留一个退出点。这也将有助于分解一些代码路径,如果函数有多个出口点,说明你的代码要进一步的重构。

 

5.Unpacking

 

如果知道列表或元组的长度,则可以通过解压缩为其元素指定名称。比如enumerate()将为列表中的每个项提供两个元素的元组,一个下标一个值:

 item

 

也可以使用它来交换变量:

a, b = b, a

 

嵌套解包也适用Py3.x:

 

6.Searching for an item in a collection

 

有时我们需要搜索一系列的东西。让我们看看两个选项:列表和集合。

以下面的代码为例:

]

def lookup_set(s):
return 's' in s

def lookup_list(l):
return 's' in l

 

  • 即使两个函数看起来都相同,因为lookup_set利用了Python中的集合是哈希表的事实,两者之间的查找性能是非常不同的。
  • 要确定项目是否在列表中,Python必须遍历每个项目,直到找到匹配的项目。
  • 这很费时,特别是对于长列表。另一方面,在集合中项目的哈希将告诉Python在集合中的哪个位置寻找匹配项目。因此,即使集合很大,也可以快速完成搜索

 

7.Check if variable equals a constan

 

检查变量是否等于常数

您不需要显式地将值与True或None或空进行比较 - 您只需将其添加到if语句即可。

 

Python代码怎么写,听听顶尖Python大神 kennethreitz的建议

 

8.Access a Dictionary Element

 

访问字典元素

不要使用该dict.has_key()方法。相反使用语法或传递默认参数 比如x in dict ,dict.get(k,default_value)

 

Python代码怎么写,听听顶尖Python大神 kennethreitz的建议

 

9.Filtering a list

 

过滤列表坏的做法,或者初学者经常会犯的错误

 

Python代码怎么写,听听顶尖Python大神 kennethreitz的建议

好的做法是使用filter函数,从Python 3.0开始,该filter()函数返回迭代器而不是列表。如果你真的需要一个列表,前面加一个list()即可!

 

10.Read From a File

 

使用语法从文件中读取,这将自动为您关闭文件,一定要用with open

 

Python代码怎么写,听听顶尖Python大神 kennethreitz的建议

11.Line Continuations

 

代码长度的持续

  • 当我们的逻辑代码行长于可接受的限制时(PEP8规定是79个字符),需要将其拆分为多个物理行。
  • 如果行的最后一个字符是反斜杠,Python解释器将连接连续的行。这在某些情况下很有用,但通常应该避免因为它的脆弱性。
  • 在反斜杠之后添加到行尾的空格会破坏代码并可能产生意外结果。

 

Bad:

from some.deep.module.inside.a.module import a_nice_function, another_nice_function,
yet_another_nice_function

 

Good:


)

from some.deep.module.inside.a.module import (
a_nice_function, another_nice_function, yet_another_nice_function)

 

更好的做法是在元素周围使用括号。在行尾留下一个未闭合的括号,Python解释器将加入下一行,直到括号被关闭。对于大括号和方括号,同样的行为也适用。

 

限于篇幅,更多精妙招式详见:https://docs.python-guide.org/

 

Python代码怎么写,听听顶尖Python大神 kennethreitz的建议

 

大神的指导非常有用,通过这些建议的招式,我们需要慢慢的思考为啥要这样写,这样背后的原理是啥!透过这些建议来理解大神对Python代码的思考,从来慢慢的领悟Python之美,升华自己的Python功力!

 

目前大家的学习热情非常高涨,人多力量大,讨论群一个晚上不看就有300多条消息,如果你一个人学习困惑,会懈怠,苦于无法入门,或者进阶吃力,需要有一堆人跟你一起跑,互相加油鼓劲,加入小密圈也许是不错的选择。

 

小密圈一年的费用早鸟价是99

目前已经是178人

超过200,就会涨价

越早加入越划算

扫下面的二维码,快速加入

Python代码怎么写,听听顶尖Python大神 kennethreitz的建议

 

Python就是这么有趣好玩

发现很多同学有入门的问题,到处找资料,现在我送一些入门书籍资料,还有后台问问题太多都有几百条,信息太多会错过,可以关注小助手,保持跟我们联系!

 

 

往期精彩:

小密圈一年的精华干货,我要送出300份电子书

菜鸟学Python,上半年文章大汇总

Python里面的这几个梗,你能回答出来吗

我珍藏的一些好的Python代码,技巧

熬了一晚上,小白用Python写了一个股票提醒系统

 

本篇文章来源于: 菜鸟学Python

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享