第十章

10.1模块

使用import将函数从外部模块中导入到程序中去。
import math
math.sin(0)
0.0

10.1.1模块就是程序
1.任何Python程序都可以作为模块导入,例如你将一个代码保存在一个文件里,名为hello.py,文件名hello就可作为模块的名称进行导入。
2.告诉解释器模块的路径的一般方法:
import sys
sys.path.append(‘c/python’)
在UNIX中必须使用完整的路径,自动创建完整路径使用sys.path.expanduser(’~/python’)
3.模块无需多次导入,多次导入效果相同。
10.1.2模块是用来下定义的
1.在模块中定义函数必定要模块化,方便重用代码。

2.在模块中添加测试代码:
在这里插入图片描述
10.1.3让模块可用
1.搜索路径
import sys,pprint
pprint.pprint(sys.path)
pprint模块中的pprint函数能够妥善的处理输出。
若要让解释器找到模块的位置只要将pprint输出的任意一个地址放 入就好。
10.1.4包
1.定义:可以包含其他模块的模块,包是一个目录,要被Python视为包,目录中必须包含文件__init__.py,如果像导入普通一样导入包,文件__init__.py的内容就是包的内容,将模块加入包中只需将模块文件放入包目录中。

10.2探索模块

10.2.1模块中包含的内容
1.dir
用于查明模块中对象的属性(即函数,变量,类等),在名称中下划线打头的文件并非供外部使用。
2.变量__all__
定义模块的共有接口。
10.2.2使用help获取帮助
在这里插入图片描述
help函数提供了函数copy的字符串文档即__doc__,以及函数所接受的参数。
10.2.3文档
在这里插入图片描述
直接看函数的字符串文档可以快速的知道函数的信息,在“Python库参考手册”描绘了标准库中的所有模块的信息。
10.2.4使用源代码
在这里插入图片描述
在IDLE中打开文件就可以查看源代码了。
注意不能修改标准库里的源代码。

10.3标准库里常用的模块。

10.3.1 sys
1.sys.argv包含传递给解释器的参数,以及脚本名。
2.sys.exit退出当前程序,向他提供一个字符串可以成为错误消息,利于找到程序出错原因。
3.sys.modules将模块名映射到当前模块(仅限已导入的模块)。
4.sys.path是由目录名组成的字符串,在执行import语句时将在这些目录中查找模块。
5.sys.platform运行解释器的平台名称。
6.sys.stdin,sys.stdout,sys.stderr标准输入,标准输出,标准错误.
在这里插入图片描述
10.3.2 os
模块os能让你访问多个操作系统服务。
os.path包含多个查看创建和删除目录文件的函数,以及操作路径函数。
os.environ包含环境变量,可以查看或者修改。
os.system用于运行外部程序,execv,popen也可以用于执行外部程序,前者退出解释器将控制权交给程序,后者创建一个到程序的连接。


还有…书上p184
10.3.3 fileinput
模块fileinput能够迭代文本文件中的所有行。
在UNIX命令行中:
$python some_script.py file1.txt file2.txt file3.txt

在这里插入图片描述
10.3.4集合,堆,列
1.集合
集合是由内置类 set实现

set(range(10))
{0,1,2,3,4,5,6,7,8,9,}

可使用序列来创建集合,也可用花括号来显示的指定,不能用花括号来创建一个空集合,因为这样创建出来的是一个字典。
集合可以用来进行成员资格检查,因此将重复元素会忽略。
集合的操作:
在这里插入图片描述
集合是可变的,但集合内的元素是不可变的。
frozenset类型可以表示不可变得集合。
2.堆
是一种优先队列 ,优先队列能让你以任意的顺序添加对象,或者在两次添加对象之间找到并删除最小元素。

在这里插入图片描述
函数heappush只用于在堆中添加元素。
堆特征:在堆中元素的排列不是按照严格顺序的,但是必须保证位置i处的元素要小于位置2i和2i+1的元素。
函数heappop弹出最小元素。

3.双端队列
在这里插入图片描述
10.3.5 time
用于读取当前时间,操作时间和日期从字符串中读取日期,将日期格式化为字符串的函数。
在这里插入图片描述
在这里插入图片描述
10.3.6random
包含生成伪随机数的函数,有助于编写模拟程序或生成随机输出的程序。
要做到真正的随机应使用模块os中的函数urandom,random中的SystemRandom与urandom的功能类似。
random.random返回一个0~1(含)的伪随机数,random.getrandbits以一个整数的方式返回指定数量的二进制位。
random.uniform提供两个参数,返回两个参数之间的实数。
在这里插入图片描述
random.randrange生成随机整数。
random.choice从给定的序列中随机均匀的选择一个元素。
在这里插入图片描述
在这里插入图片描述
10.3.7 shelve json
1.使用模块shelve存储对象避免错误的方法
temp=s[“x”]
temp.append(“b”)
s[“x”]=temp
或者将函数open的参数writeback设置为True,在数据不多的情况适用。
2.数据库应用程序

在这里插入图片描述
10.3.8 re
1.正则表达式
正则表达式是可匹配文本片段的模式(屁都不懂我这写的是什么东西)
作用:在文本中查找模式,将特定的模式替换为所计算得到的值,以及将文本分隔成片段。
通配符:句点只与一个字符匹配,而不与零或两个字符匹配。句点与除换行符以外的字符都匹配,因此叫做通配符。
对特殊字符进行转义:使用python\.org让它只与Python.org 匹配
字符集:用方括号将一个子串括起,这样的字符集与他包含的字符都匹配。
字符集每次只能匹配一个
二选一和子模式:前者“Python|perl”后者p(ython|erl)
可选模式和重复模式:r’(http://)?(www.)?python.org
与下列字符串匹配:
http://www.python.org
http://python.org
www.python.org
python.org
字符串的开头和末尾:开头匹配^ht+p与http…匹配。指定字符串的末尾可使用$。
2.模块re的内容
compile(pattern[,flags]):根据正则表达式中字符串创建模式对象。
search(pattern,string[,flags]):在字符串中查找模式,返回值为假时为None。
match(pattern,string[,flags]):在字符串开头匹配模式。
split(pattern,string[,maxsplit=0]):根据模式来分割字符串。
findall(pattern,string):返回一个列表,其中包含字符串中所有与模式匹配的子串。
sub(pat,repl,string[,count=0]):将字符串中与模式pat匹配的子串都替换为repl。
escape(string):将字符串中所有的正则表达式特殊字符都进行转义。
3.匹配对象和编组
编组:在MatchObject对象中包含与模式匹配的子串信息,还包含模式的哪部分与子串的匹配的信息,这些子串部分称为编组。
编组就是放在圆括号内的子模式,根据左边的括号数进行编号,编组0指的是整个模式。比如:
“There (was a (wee) (cooper)) who (lived in Fyfe)”
包含如下编组:
0 There was a wee cooper who lived in Fyfe
1 was a wee cooper
2 wee
3 cooper
4 lived in Fyfe
编组包含通配符和重复运算符等特殊字符。
re匹配对象的重要方法:
group([group1,…])获取与给定子模式匹配的子串,如果没有给定编组编号,则默认为0 ,返回元组(包含与给定编组匹配的子串)或者字符串。
start([group])返回与给定编组匹配的子串的起始位置
end([group])返回与给定编组匹配的子串的终止位置
span ([group]) 返回与给定编组的起始和终止位置
4.替换中的组号和函数
在替换字符中,任何类似于‘\n’的转义序列都会被替代为与模式编组n匹配的字符串,在使用正则表达式是可能会让程序难以理解,一般会使用VERBOSE做标志,或使用注释。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值