Python 编码时注意事项.doc_第1页
Python 编码时注意事项.doc_第2页
Python 编码时注意事项.doc_第3页
Python 编码时注意事项.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

淄博怡源网络科技有限公司在编程过程中,多了解语言周边的一些知识,以及一些技巧,可以让你加速成为一个优秀的程序员。对于Python程序员,你需要注意一下本文所提到的这些事情。 你也可以看看Zen of Python(Python之禅),这里面提到了一些注意事项,并配以示例,可以帮助你快速提高。1. 漂亮胜于丑陋实现一个功能:读取一列数据,只返回偶数并除以2。下面的代码,哪个更好一些呢?halve_evens_only = lambda nums: map(lambda i: i/2, filter(lambda i: not i%2, nums)VSdef halve_evens_only(nums): return i/2 for i in nums if not i % 22. 记住Python中非常简单的事情# 交换两个变量a, b = b, a# 切片(slice)操作符中的step参数。(切片操作符在python中的原型是start:stop:step,即:开始索引:结束索引:步长值)a = 1,2,3,4,5 a:2 # 遍历列表中增量为2的数据1,3,5# 特殊情况下,x:-1是实现x逆序的实用的方式 a:-15,4,3,2,1# 逆序并切片 x:-15, 4, 3, 2, 1 x:-25, 3, 13. 不要使用可变对象作为默认值def function(x, l=): #不要这样def function(x, l=None): # 好的方式 if l is None:l = 这是因为当def声明被执行时,默认参数总是被评估。4. 使用iteritems而不是itemsiteritems 使用generators ,因此当通过非常大的列表进行迭代时,iteritems 更好一些。d = 1: 1, 2: 2, 3: 3for key, val in d.items() # 当调用时构建完整的列表for key, val in d.iteritems() # 当请求时只调用值5. 使用isinstance ,而不是type# 不要这样做if type(s) = type(): .if type(seq) = list or type(seq) = tuple: .# 应该这样if isinstance(s, basestring): .if isinstance(seq, (list, tuple): .原因可参阅:stackoverflow注意我使用的是basestring 而不是str,因为如果一个unicode对象是字符串的话,可能会试图进行检查。例如: a=uaaaa print isinstance(a, basestring)True print isinstance(a, str)False这是因为在Python 3.0以下版本中,有两个字符串类型str 和unicode。6. 了解各种容器Python有各种容器数据类型,在特定的情况下,相比内置容器(如list 和dict ),这是更好的选择。我敢肯定,大部分人不使用它。我身边一些粗心大意的人,一些可能会用下面的方式来写代码。freqs = for c in abracadabra: try: freqsc += 1 except: freqsc = 1也有人会说下面是一个更好的解决方案:freqs = for c in abracadabra: freqsc = freqs.get(c, 0) + 1更确切来说,应该使用collection 类型defaultdict。from collections import defaultdictfreqs = defaultdict(int)for c in abracadabra: freqsc += 1其他容器:namedtuple() # 工厂函数,用于创建带命名字段的元组子类deque # 类似列表的容器,允许任意端快速附加和取出Counter # dict子类,用于哈希对象计数OrderedDict # dict子类,用于存储添加的命令记录defaultdict # dict子类,用于调用工厂函数,以补充缺失的值7. Python中创建类的魔术方法(magic methods)_eq_(self, other) # 定义 = 运算符的行为_ne_(self, other) # 定义 != 运算符的行为_lt_(self, other) # 定义 运算符的行为_le_(self, other) # 定义 = 运算符的行为8. 必要时使用Ellipsis(省略号“.”)Ellipsis 是用来对高维数据结构进行切片的。作为切片(:)插入,来扩展多维切片到所有的维度。例如: from numpy import arange a = arange(16).reshape(2,2,2,2)# 现在,有了一个4维矩阵2x2x2x2,如果选择4维矩阵中所有的首元素,你可以使用ellipsis符号。 a., 0.flatten()array( 0, 2, 4, 6, 8, 10, 12, 14)# 这相当于 a:,:,:,0.flatten()array

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论