python编程规范系列--建议08~18
2019-01-21 02:43:48来源:博客园 阅读 ()
本系列来自《编写高质量代码 改善python程序的91个建议》的读书笔记整理。
本章主要内容
建议8:利用assert语句来发现问题建议9:数据交换值时不推荐使用中间交换变量建议10:充分利用Lazy evaluation的特性建议11:理解枚举替代实现的缺陷建议12:不推荐使用type来进行类型检查建议13:尽量转换为浮点类型再做除法建议14:警惕eval()的安全漏洞建议15:使用enumerate()获取序列迭代的索引和值建议16:分清==与is的适用场景建议17:考虑兼容性,尽可能使用Unicod建议18:构建合理的包层次来管理module
建议8:利用assert语句来发现问题
建议9:数据交换值时不推荐使用中间交换变量
1 >>> from timeit import Timer 2 >>> Timer('temp=x;x=y;y=temp','x=2;y=3').timeit() 3 0.03472399711608887 4 >>> Timer('x,y=y,x','x=2;y=3').timeit() 5 0.031581878662109375
建议10:充分利用Lazy evaluation的特性
建议11:理解枚举替代实现的缺陷
1 >>> from collections import namedtuple 2 >>> Seasons=namedtuple('Seasons','Spring Summer Autumn Winter')._make(xrange(4)) 3 >>> print Seasons 4 Seasons(Spring=0, Summer=1, Autumn=2, Winter=3) 5 >>> print Seasons.Autumn 6 2
1 >>> Seasons._replace(Spring=2) # 不合理 2 Seasons(Spring=2, Summer=1, Autumn=2, Winter=3) 3 >>> Seasons.Summer+Seasons.Autumn == Seasons.Winter # 无意义 4 True
1 from flufl.enum import Enum 2 3 4 class Seasons(Enum): 5 Spring = "Spring" 6 Summer = 2 7 Autumn = 3 8 Winter = 4 9 10 Seasons = Enum('Seasons', 'Spring Summer Autumn Winter') 11 print Seasons 12 print Seasons.Summer.value
建议12:不推荐使用type来进行类型检查
建议13:尽量转换为浮点类型再做除法
1 >>> i=1 2 >>> while i!=1.5: 3 ... i=i+0.1 4 ... print i
建议14:警惕eval()的安全漏洞
1 # -*-coding:UTF-8 -*- 2 3 import sys 4 from math import * 5 6 7 def ExpCalcBot(string): 8 try: 9 print 'Your answer is', eval(string) 10 except NameError: 11 print "The expression you enter is not valid." 12 13 14 while True: 15 print 'Please enter a number or operation. Enter e to complete. ' 16 17 inputStr = raw_input() 18 if inputStr == 'e': 19 sys.exit() 20 elif repr(inputStr) != ' ': 21 ExpCalcBot(inputStr)
输入:__import__("os").system("dir") 显示当前目录下的所有文件.
建议15:使用enumerate()获取序列迭代的索引和值
1 >>> person={'name': 'Josn', 'age': 19, 'hobby': 'football'} 2 >>> for k,v in person.iteritems(): 3 ... print k, ":", v
建议16:分清==与is的适用场景
1 >>> a="Hi" 2 >>> b="Hi" 3 >>> a is b 4 True 5 >>> a==b 6 True 7 >>> a1 ="I am using long string for testing" # 注意区分 8 >>> b1 ="I am using long string for testing" 9 >>> a1 is b1 10 False 11 >>> a1==b1 12 True
建议17:考虑兼容性,尽可能使用Unicode
1 import codecs 2 3 4 content = open('manage.py', 'r').read() 5 6 if content[:3] == codecs.BOM_UTF8: 7 content = content[:3] 8 9 print content.decode("utf-8")
1 # coding=<encoding name> #方式一 2 #!/usr/bin/env python 3 4 # -*- coding:<encoding name> -*- #方式二 5 6 #!/usr/bin/env python 7 # vim:set fileencoding=<encoding name> #方式三
建议18:构建合理的包层次来管理module
使用包的好处:
原文链接:https://www.cnblogs.com/zhangbc/p/10289870.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash