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和Pandas库构建高效的数据分析流程
在数据驱动的时代,数据分析已成为企业决策的关键环节。本文介绍如何利用Python编程语言及其强大的数据分析库Pandas,构建一套高效且可扩展的数据分析流程。与常规的数据分析流程不同,本文不仅涵盖数据加载、清洗、转换等基础步骤,还强调数据可视化、模型探索与评估等高级分析技巧,并通过实际案例展示如何在Python中实现这些步骤,为数据分析师提供一套完整的数据分析解决方案。
|
4天前
|
设计模式 测试技术 Python
Python教程:一文了解PageObject模式
PageObject 模式通常用于 Web 应用程序的 UI 自动化测试,尤其是在使用 Selenium、Appium 、Airtest等工具进行测试时非常有效。但是,它并不局限于特定类型的应用或工具,而是一种通用的设计模式,可以用于任何需要进行 UI 自动化测试的场景。
20 5
|
4天前
|
存储 数据安全/隐私保护 计算机视觉
Python教程:一文了解从Bytes到Bits的数据转换
在Python编程中,处理数据时经常需要在字节(bytes)和位(bits)之间进行转换。这种转换在网络通信、数据加密、图像处理等领域尤为常见。本文将详细介绍如何在Python中进行字节与位之间的转换,并提供一个实用的功能:如何在指定的位位置替换位数据。
17 4
|
4天前
|
存储 Python
Python教程:深入理解Python中的命名空间和作用域
在 Python 编程中,理解命名空间(Namespace)和作用域(Scope)是至关重要的。它们决定了变量和函数的可见性和访问性,并直接影响代码的结构和行为。本文将深入探讨 Python 3 中命名空间和作用域的概念、规则以及相关的高级主题。
17 4
|
2天前
|
开发框架 Python
Python的`pygame`库用于2D游戏开发,涵盖图形、音频和输入处理。
【6月更文挑战第21天】Python的`pygame`库用于2D游戏开发,涵盖图形、音频和输入处理。要开始,先通过`pip install pygame`安装。基本流程包括:初始化窗口、处理事件循环、添加游戏元素(如玩家和敌人)、响应用户输入、更新游戏状态及结束条件。随着项目发展,可逐步增加复杂性。
6 1
|
2天前
|
数据采集 存储 JSON
Python网络爬虫教程概览
【6月更文挑战第21天】Python网络爬虫教程概览:安装requests和BeautifulSoup库抓取网页;使用HTTP GET请求获取HTML,解析标题;利用CSS选择器提取数据;处理异步内容可选Selenium;遵循爬虫策略,处理异常,尊重法律与网站规定。
7 1
|
2天前
|
存储 JSON 数据格式
Python基础语法汇总【保姆级小白教程】
我将 Python语法分为14个章节,从第一章Python基础概念到第14章模块&异常处理,本篇文章将逐一为大家讲述.
30 0
Python基础语法汇总【保姆级小白教程】
|
4天前
|
设计模式 Python
Python教程:一文了解Python工厂模式
工厂模式是一种创建型设计模式,它用于创建对象的实例,而无需在客户端代码中指定具体的类。通过引入工厂类,客户端代码只需要与工厂接口进行交互,而不需要了解实际创建的对象的细节。这样可以将对象的创建和使用分离开来,提高了代码的灵活性和可维护性。
15 2
|
4天前
|
存储 JSON JavaScript
Python教程:一文了解Python中的json库
JSON(JavaScript Object Notation)是一种轻量级数据交换格式,易于人类阅读和编写,也易于计算机解析和生成。在Python中,JSON通常用于数据交换和存储,因为它与Python的字典和列表类型相似。
19 2