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.
当一个函数在其正常过程中有多个主要出口时,调试返回的结果变得很困难,因此最好保留一个退出点。这也将有助于分解一些代码路径,如果函数有多个出口点,说明你的代码要进一步的重构。
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必须遍历每个项目,直到找到匹配的项目。
这很费时,特别是对于长列表。另一方面,在集合中项目的哈希将告诉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解释器将连接连续的行。这在某些情况下很有用,但通常应该避免因为它的脆弱性。
在反斜杠之后添加到行尾的空格会破坏代码并可能产生意外结果。
Bad :
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解释器将加入下一行,直到括号被关闭。对于大括号和方括号,同样的行为也适用。
Python写代码的用法建议的更多相关文章
- Invoking Descriptors - Python 描述符的用法建议
描述符用法建议, 内置的 property 类创建的是'覆盖型'(date descriptor), 实现了 __set__ 和 __get__. 特性 property 的 __set__ 方法 默 ...
- Python写代码的时候为什么要注释?Sun因此被Oracle收购
导读: 此块分为:1.注释的重要性 2.如何正确注释 注释的重要性 在我们看代码的时候,会遇到很多看不懂得代码,特别是在做项目的时候,代码的注释以及命名习惯的重要性就有了为什么这么说呢? 因为在很多情 ...
- python 写代码笔记 2017.6.15
其实并不是越复杂的代码越好,简单高效才是好. 关键是思路和逻辑,还有多看别人写的代码. 学习到了:)
- 细说Python的lambda函数用法,建议收藏
细说Python的lambda函数用法,建议收藏 在Python中有两种函数,一种是def定义的函数,另一种是lambda函数,也就是大家常说的匿名函数.今天我就和大家聊聊lambda函数,在Pyth ...
- 《编写高质量代码:改善Python程序的91个建议》读后感
编写高质量代码:改善Python程序的91个建议 http://book.douban.com/subject/25910544/ 1.(建议16)is 用于判断两个对象的id是否相等,==才是判断 ...
- Python写出LSTM-RNN的代码
0. 前言 本文翻译自博客: iamtrask.github.io ,这次翻译已经获得trask本人的同意与支持,在此特别感谢trask.本文属于作者一边学习一边翻译的作品,所以在用词.理论方面难免会 ...
- 写代码中遇到的问题(php接收不到传过来的json数据,php使用utf8的用法)
今天写代码用python处理完数据,传给php服务器后,发现接收不到数据,因为是跨域,所以加了消息头:header('Access-Control-Allow-Origin:*');但是并没有什么卵用 ...
- 震惊!!!python可以用中文来写代码
python可以用中文来写代码 说明: 偶尔间试了一下,python可以用中文来写代码,除了一些python内置函数,和运算符不能用中文外,其它的比如新定义的类名.函数名.变量名,甚至是函数间传的参数 ...
- 用Python写一个将Python2代码转换成Python3代码的批处理工具
之前写过一篇如何在windows操作系统上给.py文件添加一个快速处理的右键功能的文章:<一键将Python2代码自动转化为Python3>,作用就是为了将Python2的文件升级转换成P ...
随机推荐
- OpenOffice安装和转换乱码解决方案
前言: OpenOffice项目中用途:word转换pdf Windows安装.转换:安装包下载后一路OK 就可以正常安装,转换没有问题 Linux安装.转换:安装有分DEB包和RPM包,下面会说 ...
- python爬虫scrapy项目详解(关注、持续更新)
python爬虫scrapy项目(一) 爬取目标:腾讯招聘网站(起始url:https://hr.tencent.com/position.php?keywords=&tid=0&st ...
- 10个用Console来Debug的高级技巧
译者按: 我们往往会局限在自己熟悉的知识圈,但也应担偶尔拓展一下,使用一些不常见而又有用的技巧,扩大自己的舒适圈. 原文: 10 Tips for Javascript Debugging Like ...
- FE 命令随笔
FE_CMD ————— * >>>>>>>> Vue ________________________________________________ ...
- Human Motion Analysis with Wearable Inertial Sensors——阅读2
Human Motion Analysis with Wearable Inertial Sensors 实时人体运动跟踪已经应用于生物医学领域的许多应用:临床步态分析,运动康复,跌倒检测,关节生物力 ...
- 如何用ABP框架快速完成项目 - 自动化测试 - 前端angular e2e protractor
要想快速完成一个项目, 自动化是很关键很有用的一块. 自动化测试比人工测试快很多. 特别是在回归测试中. 实践证明, 虽然投入了时间在写自动化测试代码上, 但是在回归测试中节省了大量的时间,同时及时发 ...
- Spring IOC/DI
IOC:反转控制(资源获取),之前开发是要什么就 new 什么,现在只需创建 IOC 容器,你要什么 IOC 都会给你,你只管接收.反转控制的对象是 Bean,也就是对象 DI:依赖注入,依赖容器把资 ...
- Ubuntu快捷键、Ubuntu终端常用命令
Ubuntu快捷键 0.Ctrl + Alt + t 打开终端,在终端命令行操作 1. Ctrl + W: 关闭当前 Nautilus 窗口 2. Ctrl+T: 在 Nautilus 打开新的 Ta ...
- Glide开源库的使用
关于Glide Glide是一款快速高效的Android图像加载库,注重于平滑的滚动.Glide提供了易用的API,高性能.可扩展的图片解码管道(decode pipeline),以及自动的资源池技术 ...
- Nginx与Nginx-rtmp-module搭建RTMP视频直播和点播服务器
一.开发环境 Nginx地址: http://nginx.org/download/nginx-1.14.2.tar.gz Nginx-rtmp-module地址: https://github.c ...