体会⼀下这Best这招,选择是使⽤map函数,它可以将内置函数类型str映射到迭代器range。这会⽣成⼀个map对象,然后就可以像其他⽰例⼀样join。在某些情况下,map函数甚⾄可能⽐列表理解更快,更简洁!
2.One statement per line
每⼀⾏⼀个语句,尤其在复杂的逻辑表达式的时候,这样会清晰很容易阅读。
虽然列表推导等⼀些复合语句因其简洁性和表达性⽽被允许和赞赏,但在同⼀⾏代码上有两个脱节语句是不好的做法
3.Explicit code
Python因为技巧性⾮常⾼,有的时候滥⽤⼀些⿊魔法,过度的使⽤技巧⽽反⽽失去了代码本⾝的直观性。
字典的更新有⼏种⽅法,dict(**locals)本意是想⽣成⼀个新的字典返回。在上⾯的好代码中,显式地从调⽤者接收x和y,并返回显式字典。使⽤此函数的开发⼈员通过读取第⼀⾏和最后⼀⾏就能确切地知道要做什么,⽽不是像坏例⼦的那种情况,⽐较晦涩难懂,不直接。
4.Returning values
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
python怎么读取py文件# when maintaining the code.
(代码可以左右滑动)
当⼀个函数在其正常过程中有多个主要出⼝时,调试返回的结果变得很困难,因此最好保留⼀个退出点。这也将有助于分解⼀些代码路径,如果函数有多个出⼝点,说明你的代码要进⼀步的重构。
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必须遍历每个项⽬,直到到匹配的项⽬。
8.Access a Dictionary Element
访问字典元素
不要使⽤该dict.has_key()⽅法。相反使⽤语法或传递默认参数 ⽐如x in dict ,(k,default_value)
9.Filtering a list
过滤列表坏的做法,或者初学者经常会犯的错误。
好的做法是使⽤filter函数,从Python 3.0开始,该filter()函数返回迭代器⽽不是列表。如果你真的需要
⼀个列表,前⾯加⼀个list()即可!
10.Read From a File
使⽤语法从⽂件中读取,这将⾃动为您关闭⽂件,⼀定要⽤with open
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论