

Python代码怎么写,听听顶尖Python程序员的建议
source link: https://segmentfault.com/a/1190000040627753
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Python代码怎么写,听听顶尖Python程序员的建议
了解K神( kennethreitz)是从它牛逼的requests库开始,号称最顶尖的Python程序员之一。大神有很多作品,而且还有一个非常励志的传奇故事,从一个胖胖的不修边幅的码农,励志减肥而变成一个爱摄影玩音乐的,有艺术家气息程序员。今天我们一起来拜读一下大神关于写Python代码的建议!
1.Mutable and immutable types
Python有两种内置或用户定义的类型。
可变类型是允许就地修改内容的类型。典型的可变列表是列表和词典:所有列表都有变异方法,如 list.append()或list.pop(),并且可以在适当的位置进行修改。词典也是如此。
不可变类型不提供改变其内容的方法。例如,设置为整数6的变量x没有“增量”方法。如果要计算x + 1,则必须创建另一个整数并为其指定名称。
体会一下这Best这招,选择是使用map函数,它可以将内置函数类型str映射到迭代器range。这会生成一个map对象,然后就可以像其他示例一样join。在某些情况下,map函数甚至可能比列表理解更快,更简洁!
2.One statement per line
每一行一个语句,尤其在复杂的逻辑表达式的时候,这样会清晰很容易阅读。
虽然列表推导等一些复合语句因其简洁性和表达性而被允许和赞赏,但在同一行代码上有两个脱节语句是不好的做法
3.Explicit code
Python因为技巧性非常高,有的时候滥用一些黑魔法,过度的使用技巧而反而失去了代码本身的直观性。
字典的更新有几种方法,dict(**locals)本意是想生成一个新的字典返回。在上面的好代码中,显式地从调用者接收x和y,并返回显式字典。使用此函数的开发人员通过读取第一行和最后一行就能确切地知道要做什么,而不是像坏例子的那种情况,比较晦涩难懂,不直接。
4.Returning values
关于返回值的处理
当函数的复杂性增加时,在函数体内使用多个return语句并不罕见。但是,为了保持清晰的意图和可持续的可读性水平,最好避免从体内的许多输出点返回有意义的值。
在函数中返回值有两种主要情况:函数在正常处理时返回的结果,以及指示错误输入参数的错误情况或函数无法完成其计算的任何其他原因或任务
def complex_function(a, b, c): if not a: return None
Raising an exception might be better if not b: return None # Raising an exception might be better
Some complex code trying to compute x from a, b and c
Resist temptation to return x if succeeded if not x:
Some Plan-B computation of x return x
One single exit point for the returned value x will help
when maintaining the code.
当一个函数在其正常过程中有多个主要出口时,调试返回的结果变得很困难,因此最好保留一个退出点。这也将有助于分解一些代码路径,如果函数有多个出口点,说明你的代码要进一步的重构。最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系维:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~
5.Unpacking
如果知道列表或元组的长度,则可以通过解压缩为其元素指定名称。比如enumerate()将为列表中的每个项提供两个元素的元组,一个下标一个值:
for index, item in enumerate(some_list): # do something with index and item
也可以使用它来交换变量:
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 = 4
6.Searching for an item in a collection
有时我们需要搜索一系列的东西。让我们看看两个选项:列表和集合。
以下面的代码为例:
s = set(['s', 'p', 'a', 'm']) l = ['s', 'p', 'a', 'm'] def lookup_set(s): return 's' in s def lookup_list(l): return 's' in l
即使两个函数看起来都相同,因为lookup_set利用了Python中的集合是哈希表的事实,两者之间的查找性能是非常不同的。
要确定项目是否在列表中,Python必须遍历每个项目,直到找到匹配的项目。最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系维:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~
这很费时,特别是对于长列表。另一方面,在集合中项目的哈希将告诉Python在集合中的哪个位置寻找匹配项目。因此,即使集合很大,也可以快速完成搜索
7.Check if variable equals a constan
检查变量是否等于常数
您不需要显式地将值与True或None或空进行比较 - 您只需将其添加到if语句即可。
8.Access a Dictionary Element
访问字典元素
不要使用该dict.has_key()方法。相反使用语法或传递默认参数 比如x in dict ,dict.get(k,default_value)
9.Filtering a list
过滤列表坏的做法,或者初学者经常会犯的错误。
好的做法是使用filter函数,从Python 3.0开始,该filter()函数返回迭代器而不是列表。如果你真的需要一个列表,前面加一个list()即可!
10.Read From a File
使用语法从文件中读取,这将自动为您关闭文件,一定要用with open
11.Line Continuations
代码长度的持续
当我们的逻辑代码行长于可接受的限制时(PEP8规定是79个字符),需要将其拆分为多个物理行。
如果行的最后一个字符是反斜杠,Python解释器将连接连续的行。这在某些情况下很有用,但通常应该避免因为它的脆弱性。
在反斜杠之后添加到行尾的空格会破坏代码并可能产生意外结果。
my_very_big_string = """For a long time I used to go to bed early. Sometimes, when I had put out my candle, my eyes would close so quickly that I had not even time to say “I’m going to sleep.”""" from some.deep.module.inside.a.module import a_nice_function, another_nice_function, yet_another_nice_function
Good:
my_very_big_string = ( "For a long time I used to go to bed early. Sometimes, " "when I had put out my candle, my eyes would close so quickly " "that I had not even time to say “I’m going to sleep.”" ) from some.deep.module.inside.a.module import ( a_nice_function, another_nice_function, yet_another_nice_function)
更好的做法是在元素周围使用括号。在行尾留下一个未闭合的括号,Python解释器将加入下一行,直到括号被关闭。对于大括号和方括号,同样的行为也适用。最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系维:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~
大神的指导非常有用,通过这些建议的招式,我们需要慢慢的思考为啥要这样写,这样背后的原理是啥!透过这些建议来理解大神对Python代码的思考,从来慢慢的领悟Python之美,升华自己的Python功力!
Recommend
-
62
听听卖书大哥是怎么“忽悠”区块链的。。。
-
31
职场话题 - @zhangrh - 大家会不会选择纹身.如果是面试官的话, 对有纹身的应聘者是怎么样一种心态? 再或者, 如果同事有纹身的话, 大家会怎么看呢.
-
5
...
-
8
Gen Z 艺术家的时代来了,听听他们怎么说Trenity Thomas. Oops , 2020Jonathan Ferrara Gallery$625 - 1,875Z 世代不能被归纳为一个简单的类别。尽管公众认为他们是一群沉迷于社交媒体且自负的年轻人,但生于 1997 年至 2015 年的 Z …...
-
9
关于元宇宙和细分市场的潜力,听听灰度怎么说? 白泽研究院 原创 2021-11-26 06:46 热度 367943 分享 微信扫一扫:分享 ...
-
12
股票投资六个“不”?听听彼得·林奇怎么说 | GPLP犀牛财经 Connect with us To Top
-
3
来源:《人民政协报》(2022年03月28日09版文化周刊)记者:郭海瑾原标题:《科技使戏曲传播焕发生机活力——访全国政协委员、京剧表演艺术家张建国》“...
-
10
微软认可Web3?1500万美元投资娱美德,听听娱美德CEO怎么说 2022-11-04 •
-
5
27 岁,码农 纯商贷,剩余约 86w ,已还 3.5 年,利率 lpr 加 55bp ,发帖时执行利率 4.75%,每月还款 4750 。 每月公积金约 7k+,手上目前有 80w 左右 没有压力,但是觉得亏 虽然每月公积金能覆盖还款,但是利率不...
-
7
救命!求助各位大哥,想听听各位的建议。 我今年34岁,3月结的婚,没有孩子。生活工作都在重庆。目前在一个国企工作,刚入职一个多月年...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK