《Python基础教程(第二版)》学习笔记 -> 第十章 充电时刻 之 标准库
SYS
sys这个模块让你能够访问与Python解释器联系紧密的变量和函数,下面是一些sys模块中重要的函数和变量:
| 函数和变量 | 描述 |
| argv | 命令行参数,包括脚本和名称 |
| exit([arg]) | 退出当前的程序,可选参数为给定的返回值或者错误信息 |
| modules | 映射模块名字到载入模块的字典 |
| path | 查找模块所在目录的目录名列表 |
| platform | 平台标识符 |
| stdin | 标准输入流-- 一个类文件对象 |
| stdout | 标准输出流-- 一个类文件对象 |
| stderr | 标准错误流-- 一个类文件对象 |
OS
OS模块为你提供了访问多个操作系统服务的功能。
| 函数和变量 | 描述 |
| environ | 对环境变量进行映射 |
| system(command) | 在子shell中执行操作系统命令 |
| sep | 路径中的分隔符 |
| pathsep | 分割路径的分隔符 |
| linesep | 行分隔符(\n、\r、\r\n) |
| urandom(n) | 返回n字节的加密强随机数据 |
fileinput
fileinput模块让你能够轻松地遍历文件的所有行。
| 函数 | 描述 |
| input([files[,inplace[,backup]]]) | 便于遍历多个输入流中的行 |
| filename() | 返回当前文件的名称 |
| lineno() | 返回当前(累计)的行数 |
| filelineno() | 返回当前文件的行数 |
| isfirstline() | 检查当前行是否是文件的第一行 |
| isstdin() | 检查最后一行是否来自sys.stdin |
| nextfile() | 关闭当前文件,移动到下一个文件 |
| close() | 关闭序列 |
集合、堆和双堆队列
- 集合
集合是有序列(或者其他可迭代的对象)构建的。它们主要用于检查成员资格,因此副本是被忽略的:>>> set([0,1,2,3,0,1,2,3]) set([0, 1, 2, 3])
和字典一样,集合元素的顺序是随意的,因此我们不应该以元素的顺序作为依据进行编程:
>>> set(['e','r','t']) set(['r', 'e', 't'])
求两个集合的并集:
>>> a = set([1,2,3]) >>> b = set([2,3,4]) >>> a.union(b) set([1, 2, 3, 4]) >>> a|b set([1, 2, 3, 4])
- 堆
堆(heap)是优先队列的一种,使用优先队列能够以任意顺序增加对象,并且能在任何时间找到最小的元素,也就是说它比用于列表的min方法要有效得多。
Python中并没有独立的堆类型--只有一个包含一些堆操作的函数模块,这个模块叫做heapq,包括6个函数,前四个直接和堆操作相关。你必须将列表作为堆对象本身。
heapq模块中重要的函数 函数 描述 heappush(heap,x) 将x入堆 heappop(heap) 将堆中最小的元素弹出 heapify(heap) 将heap属性强制应用到任意一个列表 heapreplace(heap,x) 将堆中最小的元素弹出,同事将x入堆 nlargest(n,iter) 返回iter中第n大的元素 nsmallest(m,iter) 返回iter中第n小的元素 heappush函数用于增加堆的项。
>>> from heapq import * >>> from random import shuffle >>> data = range(10) >>> shuffle(data) >>> heap = [] >>> for n in data: heappush(heap,n) >>> heap [0, 4, 1, 5, 7, 3, 2, 9, 6, 8] >>> heappush(heap,0.5) >>> heap [0, 0.5, 1, 5, 4, 3, 2, 9, 6, 8, 7]heappop函数弹出最小的元素-- 一般来说都是在索引0出的元素,并且会确保生育元素中最小的那个占据这个位置。
>>> heappop(heap) 0 >>> heappop(heap) 0.5 >>> heap [1, 4, 2, 5, 7, 3, 8, 9, 6]
heapify函数使用任意列表作为参数,并且通过尽可能少的移位操作,将其转换为合法的堆。
>>> heap = [5,3,4,7,9,8,] >>> heapify(heap) >>> heap [3, 5, 4, 7, 9, 8]
heapreplace函数不想其他函数那么常用,它弹出堆的最小元素,并且将新元素推入。
>>> heap = [5,3,4,7,9,8,] >>> heapreplace(heap,0.5) 3 >>> heap [0.5, 5, 4, 7, 9, 8]
- 双端队列(以及其他集合类型)
双端队列(Double-ended queue,或称deque)在需要按照元素增加的顺序来移除元素时非常有用。
双端队列通过可迭代对象(比如集合)创建,而且有些非常有用的方法,如下例所示:>>> from collections import deque >>> q = deque(range(5)) >>> q.append(5) >>> q.appendleft(6) >>> q deque([6, 0, 1, 2, 3, 4, 5]) >>> q.pop() 5 >>> q.popleft() 6 >>> q.rotate(3) >>> q deque([2, 3, 4, 0, 1]) >>> q.rotate(-1) >>> q deque([3, 4, 0, 1, 2])
双端队列好用的原因是它能够有效地在开头增加和弹出元素。
Time
time模块所包括的函数能够实现以下功能:获得当前时间、操作时间和日期、从字符串读取时间以及格式化时间为字符串。
函数time.asctime()将当前时间格式化为字符串:
>>> import time >>> time.asctime() 'Mon Apr 28 15:22:24 2014'
| 函数 | 描述 |
| asctime([tuple]) | 将时间元组转换为字符串 |
| localtime([secs]) | 将描述转换为日期元组,以本地时间为准 |
| mktime(tuple) | 将时间元组转换为本地时间 |
| sleep(secs) | 休眠 secs秒 |
| strptime(string[,format]) | 将字符串解析为时间元组 |
| time() | 当前时间 |
random
random模块包括返回随机数的函数,可以用于模拟或者用于任何产生随机输出的程序。
| 函数 | 描述 |
| random() | 返回0≤n<1之间的随机实数,其中0<n≤1 |
| getrandbits(n) | 以长整型形式返回n个随机位 |
| uniform(a,b) | 返回随机实数n,其中a≤n<b |
| randrange([start],stop,[step]) | 返回range(start,stop,step)中的随机数 |
| choice(seq) | 从序列seq中返回随意元素 |
| shuffle(seq[,random]) | 原地制定序列seq |
| sample(seq,n) | 从序列seq中选择n个随机切独立的元素 |
shelve
简单的存储方案 P188
re
- 什么是正则表达式
正则表达式是可以匹配文本片段的模式。最简单的正则表达式就是普通的字符串,可以匹配其自由身。
· 通配符
正则表达式可以匹配多余一个字符串,你可以使用一些特殊字符创建这类模式。比如点号(.)可以匹配任何字符(除了换行符),所以正则表达式‘.ython’可以匹配字符串'python'和‘jython’格式字符串· 对特殊字符串进行转义
'python\\.org'可以匹配'python.org'· 字符集
你可以使用中括号括住字符串来创建字符集。字符集可以匹配它所包括的任意字符,所以'[pj]ython'能匹配'python'和'jython',而非其他内容。
为了反转字符集,可以在开头使用^字符,比如'[^abc]'可以匹配任何除了a、b和c之外的字符。· 选择符和子模式
匹配'python'和'perl',可以写成'python|perl',或者'p(ython|erl)'
括号括起来的部分,称为子模式。· 可选项和重复子模式
在子模式后面加上问号,它就变成了可选项。它可能出现在匹配字符串中,但并非必须的。例如,下面模式:
r'(http://)?(www\.)?python\.org'
只能匹配下列字符串:
'http://www.python.org'
‘http://python.org'
’www.python.org'
’python.org' - re模块的内容
re模块中一些重要的函数 函数 描述 compile(pattern[,flags]) 根据包含正则表达式的字符串创建模式对象 search(pattern.string[,flags]) 在字符串中寻找模式 match(pattern,string[,flags]) 在字符串的开始处匹配模式 split(pattern,string[,maxsplit=0]) 更具模式的匹配项来分割字符串 findall(pattern,string) 列出字符串中模式的所有匹配项 sub(pat,repl,string[,count=0]) 将字符串中所有的pat的匹配项用repl替换 excape(string) 将字符串中所有特殊正则表达式字符转义
(未完待续)
《Python基础教程(第二版)》学习笔记 -> 第十章 充电时刻 之 标准库的更多相关文章
- <<Python基础教程>>学习笔记 | 第10章 | 充电时刻
第10章 | 充电时刻 本章主要介绍模块及其工作机制 ------ 模块 >>> import math >>> math.sin(0) 0.0 模块是程序 一个简 ...
- <<Python基础教程>>学习笔记 | 第12章 | 图形用户界面
Python支持的工具包非常多.但没有一个被觉得标准的工具包.用户选择的自由度大些.本章主要介绍最成熟的跨平台工具包wxPython.官方文档: http://wxpython.org/ ------ ...
- Jquery基础教程第二版学习记录
本文仅为个人jquery基础的学习,简单的记录以备忘. 在线手册:http://www.php100.com/manual/jquery/第一章:jquery入门基础jquery知识:jquery能做 ...
- <<Python基础教程>>学习笔记 | 第04章 | 字典
第04章:字典 当索引不好用时 Python唯一的内建的映射类型,无序,但都存储在一个特定的键中.键能够使字符.数字.或者是元祖. ------ 字典使用: 表征游戏棋盘的状态,每一个键都是由坐标值组 ...
- 第二章、元组和列表(python基础教程第二版 )
最基本的数据结构是序列,序列中每个元素被分配一个序号-元素的位置,也称索引.第一个索引为0,最后一个元素索引为-1. python中包含6种内建的序列:元组.列表.字符串.unicode字符串.buf ...
- python基础教程第二版 第一章
1.模块导入python以增强其功能的扩展:三种方式实现 (1). >>> Import math >>> math.floor(32.9) 32.0 #按照 模块 ...
- <<Python基础教程>>学习笔记 | 第11章 | 文件和素材
打开文件 open(name[mode[,buffing]) name: 是强制选项,模式和缓冲是可选的 #假设文件不在.会报以下错误: >>> f = open(r'D:\text ...
- Docker技术入门与实战 第二版-学习笔记-10-Docker Machine 项目-2-driver
1>使用的driver 1〉generic 使用带有SSH的现有VM/主机创建机器. 如果你使用的是机器不直接支持的provider,或者希望导入现有主机以允许Docker Machine进行管 ...
- Docker技术入门与实战 第二版-学习笔记-8-网络功能network-3-容器访问控制和自定义网桥
1)容器访问控制 容器的访问控制,主要通过 Linux 上的 iptables防火墙来进行管理和实现. iptables是 Linux 上默认的防火墙软件,在大部分发行版中都自带. 容器访问外部网络 ...
随机推荐
- 李洪强iOS开发支付集成之银联支付
iOS开发支付集成之银联支付 银联官网在这里,这里能下载SDK或者是看文档.最新的版本写的简单了很多,看文档一直做下去基本上就没问题了. 首先,SDK在这里下载,里面包含需要的库文件和详细的文档. 银 ...
- 李洪强iOS开发之Foundation框架—结构体
Foundation框架—结构体 一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框 ...
- python 字符串格式化 输出
1. 需要输出3列,为了输出好看,需要制定每一列的宽度: ‘%6.2f’ % 1.235 # 长度为6,保留2为小数 print '{0:20} {1:<20} {1:<20}\r\n'. ...
- WCF入门(六)---主机WCF服务
建立一个WCF服务后,下一步就是托管它,以便客户端应用程序可以使用,这就是所谓的WCF服务托管. WCF服务可以通过使用任何的四种方法如下托管. IIS主机 - IIS是Internet信息服务的缩写 ...
- Failed to execute goal.....webxml attribute is required...
maven在打包项目的时候报错 Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-wa ...
- JAVA+ Proxool+ SQLserver 2008 “signer information does not match signer information of other classes in the same package”
1. Proxool+SQLserver2008(sqljdbc4.jar)集成问题最近在项目中遇到个问题:我用的是Proxool连接池,连接SQLserver2008数据库,控制台报错:签名信息和同 ...
- hadoop拾遗(三)---- 多种输入
虽然一个MapReduce作业的输入可能包含多个输入文件(由文件glob.过滤器和路径组成),但所有文件都由同一个InputFormat和同一个Mapper来解释.然而,数据格式往往会随时间而演变,所 ...
- Java语言基本语法
Java语言基本语法 一.标识符和关键字 标识符 在java语言中,用来标志类名.对象名.变量名.方法名.类型名.数组名.包名的有效字符序列,称为“标识符”: 标识符由字母.数字.下划线.美元符号组成 ...
- [HDOJ4578]Transformation(线段树,多延迟标记)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4578 四种操作:查询.加法.乘法.改数.应该是需要维护三个lazy标记,然后就是套路了.查询是区间内所 ...
- EJB3Persistence开发手册-原生SQL查询(NativeSQL)
EJB3 QL对原生SQL做了非常好的支持.采用原生SQL做查询结果不但可以是象SQL中的返回列值,也可以是Entity类,甚至可以是两者的混合. EJB3 EntityManager接口定义了多个原 ...