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

简介: 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.模版系统示例


相关文章
|
1天前
|
机器学习/深度学习 编解码 算法
常用的Python库介绍
Python作为一种功能强大的编程语言,拥有众多的第三方库和框架,这些库和框架覆盖了从数据处理、网络编程、Web开发到人工智能等多个领域。
28 15
|
4天前
|
数据采集 小程序 数据库
20年“镇国级”IT大牛,竟搞出500页漫画Python零基础顶级教程!
乔布斯说每个人都应该学习一门编程语言。Python正热,我决定通过编程让自己习得一种思考问题的方式,这也是我在个人编程生涯中的最大收获。 我以为只能枯燥无味地学编程,直到看到本书的样章,以漫画形式让我更直观、生动地了解到什么是编程。超级喜欢这种漫画风格。我回想起自己当年学习编程语言时的情景:逼迫自己背诵和消化、吸收那些自己根本没有理解的内容。如果当时有这么一本书,我就不会学得那么艰难,然后用了那么久才摸索成为一名“攻城狮”。
|
2天前
|
分布式计算 大数据 Java
如何使用Python的pyodps库来进行跨项目空间重命名表名?
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
28 12
|
1天前
|
存储 监控 数据可视化
【Bokeh 库】Python 中的动态数据可视化
【7月更文挑战第15天】Python的Bokeh库是用于动态数据可视化的利器,它能创建交互式、现代Web浏览器兼容的图表。安装Bokeh只需`pip install bokeh`。基础概念包括Plot、Glyph、数据源和工具。通过示例展示了如何用Bokeh创建动态折线图,包括添加HoverTool。Bokeh还支持散点图、柱状图,可自定义样式和布局,添加更多交互工具,并能构建交互式应用和实时数据流更新。适用于数据探索和实时监控。
18 5
|
8天前
|
网络协议 安全 Shell
`nmap`是一个开源的网络扫描工具,用于发现网络上的设备和服务。Python的`python-nmap`库允许我们在Python脚本中直接使用`nmap`的功能。
`nmap`是一个开源的网络扫描工具,用于发现网络上的设备和服务。Python的`python-nmap`库允许我们在Python脚本中直接使用`nmap`的功能。
|
8天前
|
机器人 Shell 开发者
`roslibpy`是一个Python库,它允许非ROS(Robot Operating System)环境(如Web浏览器、移动应用等)与ROS环境进行交互。通过使用`roslibpy`,开发者可以编写Python代码来远程控制ROS节点,发布和订阅话题,以及调用服务。
`roslibpy`是一个Python库,它允许非ROS(Robot Operating System)环境(如Web浏览器、移动应用等)与ROS环境进行交互。通过使用`roslibpy`,开发者可以编写Python代码来远程控制ROS节点,发布和订阅话题,以及调用服务。
|
4天前
|
数据采集 搜索推荐 机器人
Python 神器:wxauto 库
Python 神器:wxauto 库
38 1
|
8天前
|
Python
确保你已经安装了`python-barcode`库。如果没有,可以通过pip来安装:
确保你已经安装了`python-barcode`库。如果没有,可以通过pip来安装:
|
1月前
|
开发工具 git Python
安装和使用`libnum`是一个用于数字理论函数的Python库
【6月更文挑战第19天】`libnum`是Python的数字理论函数库。安装可通过`git clone`,进入目录后运行`python setup.py install`,也可用`pip install libnum`。示例:使用`int_to_hex`将十进制数42转换为十六进制字符串'2a'。注意,信息可能已过时,应查最新文档以确保准确性。如遇问题,参考GitHub仓库或寻求社区帮助。
24 1
|
Linux Python
不可出外网的主机如何快速、方便、优雅的安装Python库?
不可出外网的主机如何快速、方便、优雅的安装Python库?
480 0
不可出外网的主机如何快速、方便、优雅的安装Python库?