8.7 列表工具 许多数据结构需求能通过内置列表类型满足,但是,有时处于不同性能取舍需要从中选择一 种实现。 Array 模块能提供一个像列表的 array 对象,它仅仅能存储同类数据并且更加简洁。接下来 例子展示了一个数字数组。存储是 2 个字节的无标识的二进制数据而不是在 python 对象中 普通列表中的每个 16字节的值。 >>> from array import array >>> a = array(’H’, [4000, 10, 700, 22222]) >>> sum(a) 26932 >>> a[1:3] array(’H’, [10, 700]) Collections模块通过方法 depue()提供了一个类似列表对象,它从左边开始能更加快速添 加和删除,但是在中间查询时很慢。这些对象很适合实现队列和广度优先查询。
2021-09-01 09:34:25 1.32MB Python3.2.3 翻译
1
6.4 一些说明 数据属性可以重写同名的方法属性。这是为了避免在大型系统中产生问题的意外名称冲突。所以用一些减 少冲突的常用方法是很有效果的。常用的方法包括:大写字母方法名称,用唯一的字符串来做为数据属性 的名称(可以是个下划线_)或者用动词命名方法和用名字命名数据属性。 数据属性就像和对象的普通用户一样可以被方法引用。换句话说,类不能用来实现纯净的数据类型。事实 上,在 python中不能强制数据隐藏,一切基于约定。(另一方面,如 C 中写的,python的实现可以做到完 全隐藏实现细节并且在必要是可以控制对象的访问,这可以通过 C语言扩展 Python) 客户应该谨慎使用数据属性,客户可能会混淆通过方法来维护的常量。而践踏他们的数据属性。注意只要 能避免重复,客户可以自己添加数据属性给对象实例,而不影响方法的合法性--再次,命名约定可以避免 很多麻烦。 从方法内部引用数据属性(或者其他方法)是没有便捷方式的。 我发现这可以增加方法的可读性,当浏览 一个方法时,不会轻易混淆局部变量和实例变量。 常常,方法的第一参数称为 self。 这里除了约定在没有其他意思,名称 self 对 python绝对没有特别的含义。 但是,要注意,如果不遵守这种约定,你的代码可能对其他 python程序员来说可读性很差。也可以理解, 类浏览程序可能就是基于这种约定的写成的。 任何作为类属性的函数对象定义了一个该类实例的方法。在类定义中在书面上函数定义是封装的有时是没 有必要的,也可以把一个函数对象赋值给在类中的局部变量。例如: # Function defined outside the class def f1(self, x, y): return min(x, x+y) class C:
2021-08-23 19:38:42 1.32MB Python3.2.3 翻译
1
7.10 性能评测 一些 python使用者对于同一问题的不同解决办法的性能很感兴趣。Python提供了一种评测工具就可以马上 回答这些问题。 例如, 当封装参数的时候可以用元组封装和拆封特性来代替传统的方法。Timeit 模块中可以迅速描述一个 性能优势。 >>> from timeit import Timer >>> Timer(’t=a; a=b; b=t’, ’a=1; b=2’).timeit() 0.57535828626024577 >>> Timer(’a,b = b,a’, ’a=1; b=2’).timeit() 0.54962537085770791 与 timeit 的细粒度相比,profile 和 pstate 模块提供了在大代码块中识别时间临界区的工具。 7.11 质量控制 开发高质量的软件的方法之一就是对每个功能写测试用例。在开发过程中频繁地运行这些用 例。 Doctest 模块提供一个扫描模块和验证嵌套在程序文档字符中的测试。测试编制是简单 的把一个典型的调用及它的结果剪切并粘贴到文档字符串里。这通过为用户提供一个实例改 善了文档,并且它允许 doctext 模块确认代码和文档相符。 Unittest 模块不像 doctest 模块那么容易使用。但是,它允许一个更加复杂的测试来维护 分开文件。
2021-08-23 19:35:22 1.32MB Python3.2.3 翻译
1
7.5 字符串模式匹配 re 模块为高级字符串成处理提供了正则表达式匹配。 对于复杂的匹配和处理,正则表达式能够提供简明优 化的方法: >>> import re >>> re.findall(r’\bf[a-z]*’, ’which foot or hand fell fastest’) [’foot’, ’fell’, ’fastest’] >>> re.sub(r’(\b[a-z]+) \1’, r’\1’, ’cat in the the hat’) ’cat in the hat’ 当仅仅需要一些简单的功能时候,优先使用 string方法,因为它更容易读取和调试。 >>> ’tea for too’.replace(’too’, ’two’) ’tea for two’ 7.6 数学 数学模块为浮点数运算提供了对底层 C 函数库的访问支持。 >>> import math >>> math.cos(math.pi / 4) 0.70710678118654757 >>> math.log(1024, 2) 10.0 Random模块为生成随机选择提供了工具。 >>> import random >>> random.choice([’apple’, ’pear’, ’banana’]) ’apple’ >>> random.sample(range(100), 10) # sampling without replacement
2021-08-23 17:02:05 1.32MB Python3.2.3 翻译
1
Oracle_OCI官方开发文档的中文版,适合英语不好的朋友。
2021-08-23 14:25:27 2.09MB ORACLE OCI
1
第三章 数据结构 这章将详细学习你以前已经知道的知识,同时也会添加一些新知识。 3.1 列表 列表数据类型有很多方法,以下是列表对象的所有方法: list.append(x) 添加单个元素到列表末尾,等同于 a[len(a)] = [x] list.extend(L) 通过添加指定列表中所有的元素来扩展列表,等同于 a[len(a):] = L. list.insert(i, x) 把单个元素插入到制定的元素。第一个参数是在列表中的索引。因此 a.insert(0, x)意思是吧 元素 X 插入到列表最前面,a.insert(len(a), x) 等同于 a.append(x). list.remove(x) 从列表中删除第一个值为 x 的元素,如果没这个元素将会出错。 list.pop([i ]) 删除指定位置的元素,并且返回该元素,如果没有指定的索引,a.pop()就会删除列表中最后 一个元素,括号中的参数是可以选择的。 list.index(x) 返回列表中第一个满足值为 X 元素的索引,如果没有该元素就会出错。 list.count(x) 计算在列表中值为 x的元素出现的次数。 list.sort() 对列表中的元素进行排序。 list.reverse()
2021-08-14 03:24:19 1.32MB Python3.2.3 翻译
1
7.7 互联网访问 Python中有许多访问互联网和处理互联网协议的模块。其中最简单的两个就是从链接中获得数据的 urllib.request和发送邮件的 smtplib. >>> from urllib.request import urlopen >>> for line in urlopen(’http://tycho.usno.navy.mil/cgi-bin/timer.pl’): ... line = line.decode(’utf-8’) # Decoding the binary data to text. ... if ’EST’ in line or ’EDT’ in line: # look for Eastern Time ... print(line) Nov. 25, 09:43:32 PM EST >>> import smtplib >>> server = smtplib.SMTP(’localhost’) >>> server.sendmail(’soothsayer@example.org’, ’jcaesar@example.org’, ... """To: jcaesar@example.org ... From: soothsayer@example.org ... ... Beware the Ides of March. ... """) >>> server.quit() (注意第二个例子需要有一个在本地运行的 email 邮箱服务器) 7.8 时间和日期 Datatime 模块提供一些用简单或复杂方式处理时间和日期的类。当处理日期和时间数据时,
2021-08-14 03:12:27 1.32MB Python3.2.3 翻译
1
7.9 数据压缩 Python还支持常用数据的打包和压缩。主要涉及到的模块式 zlib,gzip, bz2,zipfile and tarfile. >>> import zlib >>> s = b’witch which has which witches wrist watch’ >>> len(s) 41 >>> t = zlib.compress(s) >>> len(t) 37 >>> zlib.decompress(t) b’witch which has which witches wrist watch’ >>> zlib.crc32(s) 226805979
2021-08-14 03:02:12 1.32MB Python3.2.3 翻译
1
8.8 十进制浮点数计算 十进制模块提供了对十进制浮点数计算的 Decimal 数据类型。相比于内置的二进制 float 浮 点实现,此类更加有助于以下情况:  需要精确十进制位数表示的财务系统或者其他用途。  控制精度  控制保留位数以来满足法律或者管理需求  重大十进制数的跟踪  那些用户想要控制数学计算结果的应用程序 例如,计算在 70 美分电话费中 5%的税收,在十进制和二进制浮点数不同可能导致不同额 结果。如果要对最接近的分钟数进行舍入,这种差别就变得很重要。 >>> from decimal import* >>> round(Decimal(’0.70’)*Decimal(’1.05’), 2) Decimal(’0.74’) >>> round(.70*1.05, 2) 0.73
2021-08-14 00:55:55 1.32MB Python3.2.3 翻译
1
本电子书原文最早由蓝莲花(汪晓明)二 2016 年収布二其博客 (http://wangxiaoming.com),由汇智网(http://www.hubwiz.com)编 目整理,是目前网上流传癿最完整癿官网文档中文版。相俆众多仅亊以太坊开 収癿极客仧,都曾叐益二汪晓明兇生癿辛苦付出。 但由二以太坊本身(以及周边生态)癿収展非常快,一些实践性内容已绊落后 二现状。因此编者建议本电子书癿读者,在阅读旪应注意吸收核心癿理念思想, 而丌要过分关注书中癿实践操作环节。 为了弥补返一遗憾, 汇智网推出了在线亝于式以太坊 DApp 实戓开収课程, 以 去中心化投票应用 (Voting DApp) 为课程顷目,通过三次迭代开収过程癿诡 细讱解不在线实践, 幵丏将匙块链癿理念不去中心化思想贯穿二课程实践过程 中, 为帆望快速入门匙块链开収癿开収者提供了一个高敁癿学习不价值提升途 徂。
2021-08-11 09:36:45 1.39MB 以太坊 区块链
1