【Python】标准库的使用

简介: 【Python】标准库的使用

Python 通过模块来体现“库”

  1. 降低了程序猿的学习成本
  2. 提高了程序的开发效率

就是是别人已经写好了的代码,可以让我们直接拿来用

荀子曰: “君子性非异也,善假于物也”

一个编程语言能不能流行起来,一方面取决于语法是否简单方便容易学习,一方面取决于生态是否完备

所谓的 “生态” 指的就是语言是否有足够丰富的库, 来应对各种各样的场景

实际开发中,也并非所有的代码都自己手写,而是要充分利用现成的库,简化开发过程

按照库的来源,可以大致分成两大类

  • 标准库:Python 自带的库,只要安装了 Python 就可以直接使用
  • 第三方库:其他人实现的库,要想使用,需要额外安装,种类非常庞大

标准库

Python 自身内置了非常丰富的库.,在 Python 官方文档上可以看到这些库的内容

https://docs.python.org/3.10/library/index.html

简单来说, 主要是这些部分:

  • 内置函数 (如 printinput 等)
  • 内置类型 (针对 intstrboollistdict 等类型内置的操作).
  • 文本处理
  • 时间日期
  • 数学计算
  • 文件目录
  • 数据存储 (操作数据库,数据序列化等).
  • 加密解密
  • 操作系统相关
  • 并发编程相关 (多进程, 多线程, 协程, 异步等).
  • 网络编程相关
  • 多媒体相关 (音频处理, 视频处理等)
  • 图形化界面相关

日期计算

输入任意的两个日期,计算两个日期之间隔了多少天

  • 使用 import 语句导入标准库的 datetime 模块
  • 使用 datetime. 构造两个日期,参数使用年,月,日这样的格式
  • 两个日期对象相减,即可得到日期的差值
import datetime  
  
date1 = datetime.datetime(2004,2,23)  
date2 = datetime.datetime(2024,9,1)  
print(date2 - date1)
"""
运行结果
7496 days, 0:00:00
"""

或者这样行写

from datetime import datetime  
  
date1 = datetime(2004,2,23)  
date2 = datetime(2024,9,1)  
print(date2 - date1)
"""
运行结果
7496 days, 0:00:00
"""

或者这样写,将模块名重命名一下

import datetime as dt  
  
date1 = dt.datetime(2004,2,23)  
date2 = dt.datetime(2024,9,1)  
print(date2 - date1)

关于 datetime 的更多操作,可以参考官方文档

https://docs.python.org/3/library/datetime.html

字符串操作

字符串是 Python 的内置类型,字符串的很多方法不需要导入额外的模块,即可直接使用

剑指offer 58,翻转单词顺序

https://leetcode.cn/problems/fan-zhuan-dan-ci-shun-xu-lcof/description/

输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。

思路

  1. 针对上述字符串,使用空格进行切分。split 方法,可以指定分隔符,把字符串分成多个部分,放到一个 list 里面
  2. 针对方才的切分结果列表,进行逆序==> reverse
  3. 将逆序后的列表,组合起来==> join
def reverseWords(s: str):  
    tokens = s.split(' ')  
    tokens.reverse()  
    return ' '.join(tokens)
  • s: str 是声明 s 是一个字符串变量

leetcode 796,旋转字符串

https://leetcode.cn/problems/rotate-string/

给定两个字符串,sgoal。如果在若干次旋转操作之后,s 能变成 goal ,那么返回 true

s 的旋转操作就是将 s 最左边的字符移动到最右边。

例如,若 s = 'abcde',在旋转一次之后结果就是 'bcdea'

思路

  • 使用 len 求字符串的长度,如果长度不相同,则一定不能旋转得到
  • s 和自己进行拼接,然后直接使用 in 方法来判定 goal 是否是 s + s 的子串.
def rotateSstring(s, goal):  
    if len(s) != len(goal):  
        return False  
    return goal in (s+s)

leetcode 2255,统计是给定字符串前缀的字符串数目

https://leetcode.cn/problems/count-prefixes-of-a-given-string/

给你一个字符串数组 words 和一个字符串 s ,其中 words[i]s 只包含小写英文字母。

请你返回 words 中是字符串 s 前缀的字符串数目。

一个字符串的 前缀 是出现在字符串开头的子字符串。子字符串是一个字符串中的连续一段字符序列

思路

  • 遍历 words,取出每个字符串
  • 判定当前这个字符串是否是 s 的前缀(s 是否是以这个字符串开头的)==>startwith
def countPrefixes(words: list, s: str):  
    count = 0  
    for word in words:  
        if s.startswith(word):  
            count += 1  
    return count

关于字符串的更多操作, 参考官方文档

https://docs.python.org/3/library/stdtypes.html#str

文件查找工具

  • 搜索的关键就是对目录结构进行遍历
  • 递归查找,遇到子目录,就进到目录里面进行查找
import os  
  
inputPath = input('请输入待搜索路径: ')  
pattern = input('请输入待搜索关键词: ')  
  
for dirpath, dirnames, filenames in os.walk(inputPath):  
    for f in filenames:  
        if pattern in f:  
            print(f'{dirpath}/{f}')
  • os.walk是一个遍历操作系统目录非常好用的一个办法
  • 只需要使用简单的循环就能完成递归遍历目录的操作,不必手写递归代码
  • os 传入的参数就是要从哪个目录开始进行遍历
  • dirpath 表示遍历到当前位置,对应的路径是什么
  • dirnames 表示当前目录下都有哪些目录,是一个列表,可以包含多个目录
  • dirnames 表示当前目录下都有哪些文件名,是一个列表,可以包含多个文件名
  • os.walk 每次调用,都能自动的去针对子目录进行递归的操作,只需要使用上述循环,就可以把所有的路径都获取出来


相关文章
|
14天前
|
调度 开发者 Python
Python中的异步编程:理解asyncio库
在Python的世界里,异步编程是一种高效处理I/O密集型任务的方法。本文将深入探讨Python的asyncio库,它是实现异步编程的核心。我们将从asyncio的基本概念出发,逐步解析事件循环、协程、任务和期货的概念,并通过实例展示如何使用asyncio来编写异步代码。不同于传统的同步编程,异步编程能够让程序在等待I/O操作完成时释放资源去处理其他任务,从而提高程序的整体效率和响应速度。
|
17天前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
48 0
|
11天前
|
数据库 Python
异步编程不再难!Python asyncio库实战,让你的代码流畅如丝!
在编程中,随着应用复杂度的提升,对并发和异步处理的需求日益增长。Python的asyncio库通过async和await关键字,简化了异步编程,使其变得流畅高效。本文将通过实战示例,介绍异步编程的基本概念、如何使用asyncio编写异步代码以及处理多个异步任务的方法,帮助你掌握异步编程技巧,提高代码性能。
29 4
|
11天前
|
API 数据处理 Python
探秘Python并发新世界:asyncio库,让你的代码并发更优雅!
在Python编程中,随着网络应用和数据处理需求的增长,并发编程变得愈发重要。asyncio库作为Python 3.4及以上版本的标准库,以其简洁的API和强大的异步编程能力,成为提升性能和优化资源利用的关键工具。本文介绍了asyncio的基本概念、异步函数的定义与使用、并发控制和资源管理等核心功能,通过具体示例展示了如何高效地编写并发代码。
23 2
|
16天前
|
数据采集 JSON 测试技术
Python爬虫神器requests库的使用
在现代编程中,网络请求是必不可少的部分。本文详细介绍 Python 的 requests 库,一个功能强大且易用的 HTTP 请求库。内容涵盖安装、基本功能(如发送 GET 和 POST 请求、设置请求头、处理响应)、高级功能(如会话管理和文件上传)以及实际应用场景。通过本文,你将全面掌握 requests 库的使用方法。🚀🌟
36 7
|
1月前
|
网络协议 数据库连接 Python
python知识点100篇系列(17)-替换requests的python库httpx
【10月更文挑战第4天】Requests 是基于 Python 开发的 HTTP 库,使用简单,功能强大。然而,随着 Python 3.6 的发布,出现了 Requests 的替代品 —— httpx。httpx 继承了 Requests 的所有特性,并增加了对异步请求的支持,支持 HTTP/1.1 和 HTTP/2,能够发送同步和异步请求,适用于 WSGI 和 ASGI 应用。安装使用 httpx 需要 Python 3.6 及以上版本,异步请求则需要 Python 3.8 及以上。httpx 提供了 Client 和 AsyncClient,分别用于优化同步和异步请求的性能。
python知识点100篇系列(17)-替换requests的python库httpx
|
17天前
|
机器学习/深度学习 数据采集 算法
Python机器学习:Scikit-learn库的高效使用技巧
【10月更文挑战第28天】Scikit-learn 是 Python 中最受欢迎的机器学习库之一,以其简洁的 API、丰富的算法和良好的文档支持而受到开发者喜爱。本文介绍了 Scikit-learn 的高效使用技巧,包括数据预处理(如使用 Pipeline 和 ColumnTransformer)、模型选择与评估(如交叉验证和 GridSearchCV)以及模型持久化(如使用 joblib)。通过这些技巧,你可以在机器学习项目中事半功倍。
21 3
|
20天前
|
数据采集 数据可视化 数据处理
如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`)
本文介绍了如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`),加载历史数据,计算均线和其他技术指标,实现交易逻辑,记录和可视化交易结果。示例代码展示了如何根据均线交叉和价格条件进行开仓、止损和止盈操作。实际应用时需注意数据质量、交易成本和风险管理。
40 5
|
18天前
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
31 2
|
28天前
|
数据可视化 数据挖掘 Python
Seaborn 库创建吸引人的统计图表
【10月更文挑战第11天】本文介绍了如何使用 Seaborn 库创建多种统计图表,包括散点图、箱线图、直方图、线性回归图、热力图等。通过具体示例和代码,展示了 Seaborn 在数据可视化中的强大功能和灵活性,帮助读者更好地理解和应用这一工具。
37 3