Python基础教程(第3版)中文版 第10章 标准库(笔记)

                                     第10章 开箱即用 模块

1.模块


1.模块就是程序
任何python程序都可作为模块导入。
要告诉解释器去哪查找这个模块,可使用:
import sys
sys.path.append('路径')

python导入模块时只导入一次
第二次导入时什么都不会发生
如果要重新加载模块,可使用:
import importlib
x = importlib.reload(x)

2.模块是用来下定义的
1.在模块中定义函数
2.在模块中添加测试代码
例子:
#hello4.py

def hello():
    print("hello4")

def test():
    hello()

if __name__ == '__main__':test()

3.让模块可用
1.将模块放在正确的位置
将文件放在搜索目录中:
>>> import sys, pprint
>>> pprint.pprint(sys.path)
将打印除搜索路径目录
最好放在类似site-packages的地方
2.告诉解释器去哪里找
如果不能使用方法1,就要告诉解释器去哪里查找。
方法之一是 修改sys.path
更常用的做法是 将模块目录包含到环境变量PYTHONPATH中

4.包(package)
包是另一种模块。
包是一个目录,包含文件__init__.py
如果像普通模块一样导入包,__init__.py就是包的内容。
要将模块加入包,只要将模块文件放在包目录。
包中还可以嵌套其他包。
使用包和包中的模块的 例子:
import drawing # (1) 导入drawing包
import drawing.colors # (2) 导入drawing包中的模块colors
from drawing import shapes # (3) 导入模块shapes


2.探索模块


1.模块包含什么
首先导入模块
1.使用dir 列出对象的属性(函数、类、变量)
2.变量__all__
返回公有接口

2.使用help获得帮助
帮助信息实际上是从 文档字符串中提取的。

3.文档
“Python库参考手册”,它描述了标准库中的所有模块。在需要获悉一些有关Python的事实
时,十有八九能在这里找到。“Python库参考手册”(https://docs.python.org/library)可在线浏览和
下载,几个其他的标准文档(如“Python 入门指南”和“Python 语言参考手册”)也是如此。所
有的文档都可在Python网站(https://docs.python.org)上找到。
4.使用源代码
特性__file__ 得到模块的源代码

3.标准库


1.sys
访问和解释器相关的变量和函数

sys中常见的函数/变量
函数/变量 描 述
argv 命令行参数,包括脚本名
exit([arg]) 退出当前程序,可通过可选参数指定返回值或错误消息
modules 一个字典,将模块名映射到加载的模块
path 一个列表,包含要在其中查找模块的目录的名称
platform 一个平台标识符,如sunos5或win32
stdin 标准输入流——一个类似于文件的对象
stdout 标准输出流——一个类似于文件的对象
stderr 标准错误流——一个类似于文件的对象
2.os
访问 操作系统服务
os中重要的函数/变量
函数/变量 描 述
environ 包含环境变量的映射
system(command) 在子shell中执行操作系统命令
sep 路径中使用的分隔符
pathsep 分隔不同路径的分隔符
linesep 行分隔符('\n'、'\r'或'\r\n')
urandom(n) 返回n个字节的强加密随机数据

3.fileinput
读写文件

input([files[, inplace[, backup]]]) 帮助迭代多个输入流中的行
filename() 返回当前文件的名称
lineno() 返回(累计的)当前行号
filelineno() 返回在当前文件中的行号
isfirstline() 检查当前行是否是文件中的第一行
isstdin() 检查最后一行是否来自sys.stdin
nextfile() 关闭当前文件并移到下一个文件
close() 关闭序列

4. 集合、堆和双端队列
1.集合
set
2.堆
heap
3.双端队列

5.time
时间模块
asctime([tuple]) 将时间元组转换为字符串
localtime([secs]) 将秒数转换为表示当地时间的日期元组
mktime(tuple) 将时间元组转换为当地时间
sleep(secs) 休眠(什么都不做)secs秒
strptime(string[, format]) 将字符串转换为时间元组
time() 当前时间(从新纪元开始后的秒数,以UTC为准)

6.random
随机数
random() 返回一个0~1(含)的随机实数
getrandbits(n) 以长整数方式返回n个随机的二进制位
uniform(a, b) 返回一个a~b(含)的随机实数
randrange([start], stop, [step]) 从range(start, stop, step)中随机地选择一个数
choice(seq) 从序列seq中随机地选择一个元素
shuffle(seq[, random]) 就地打乱序列seq
sample(seq, n) 从序列seq中随机地选择n个值不同的元素

7.shelve 和 json
存储数据


8.re
正则表达式
1.正则表达式是什么?
正则表达式是可匹配文本片段的模式。
最简单的正则表达式是普通字符串,与它自己匹配。例:'py'和字符串'py'匹配。
—通配符 (wildcard)
 正则表达式可与多个字符串匹配。
 句号和换行符外的字符匹配。例:'.ython'和'pyhon' 和 'jython'都匹配
 句点和一个字符匹配。
-对特殊字符进行转义
 加上反斜杠 即可转义,(在字符串中需要写成\\),
 或使用原始字符串(前缀r)
-字符集
用方括号将一个子串括起,创建一个字符集。
这个字符集 和它包含的字符 都匹配。
例'[pj]ython'和'python'和'jython'都匹配
还可使用范围:如'[a-z]'和a-z的字母匹配
组合[a-zA-Z0-9]和大小写字母、数字匹配
字符集只能匹配一个字符。 
如果要指定排除字符集,开头加^,
例:'[^abc]'将排除abc
-二选一
  使用|  例:'python|perl'
  只匹配这两个字符串。
  子模式():模式的一部分:
  使用圆括号。例:'p(ython|erl)'
-可选模式和重复模式
 在子模式后面加上问号,让其变成可选的。
 例:r'(http://)?(www\.)?python\.org'
只和下面四个匹配。
'http://www.python.org'
'http://python.org'
'www.python.org'
'python.org' 
问号表示子模式可出现一次
*:任意次数
+:>0次
{m,n}:m~n次
-字符串的开头和结尾
开头,^ 例:想知道字符串开头是否和'ht+p'匹配
使用'^ht+p'
结尾 $

2.模块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
escape(string) 对字符串中所有的正则表达式特殊字符都进行转义

3.匹配对象和编组(group)
查找匹配的函数在找到时返回MatchObject对象。
编组是圆括号内的子模式。根据左边的括号数编号。0指整个模式。
例:'There(was a (wee)(copper)) who (lived in Fyfe'
0 There was a wee copper who lived in Fyfe
1 was a wee copper
2 wee
3 copper
4 lived in Fyfe

group([group1, ...]) 获取与给定子模式(编组)匹配的子串
start([group]) 返回与给定编组匹配的子串的起始位置
end([group]) 返回与给定编组匹配的子串的终止位置(与切片一样,不包含终止位置)
span([group]) 返回与给定编组匹配的子串的起始和终止位置
4. 替换中的组号和函数
5.找出发件人
6.模版系统示例
...

猜你喜欢

转载自blog.csdn.net/qq_41068877/article/details/82080475