【Python】标准库的使用

news/2024/9/19 0:52:25/ 标签: python, 开发语言

Python 通过模块来体现“库”

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

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

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

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

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

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

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

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

标准库

Python 自身内置了非常丰富的库.,在 Python 官方文档上可以看到这些库的内容
https://docs.python.org/3.10/library/index.html

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

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

日期计算

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

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

或者这样行写

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

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

python">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”。image.png

思路

  1. 针对上述字符串,使用空格进行切分。split 方法,可以指定分隔符,把字符串分成多个部分,放到一个 list 里面
  2. 针对方才的切分结果列表,进行逆序==> reverse
  3. 将逆序后的列表,组合起来==> join
python">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'image.png

思路

  • 使用 len 求字符串的长度,如果长度不相同,则一定不能旋转得到
  • s 和自己进行拼接,然后直接使用 in 方法来判定 goal 是否是 s + s 的子串.
python">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 前缀的字符串数目。
一个字符串的 前缀 是出现在字符串开头的子字符串。子字符串是一个字符串中的连续一段字符序列image.png|486

思路

  • 遍历 words,取出每个字符串
  • 判定当前这个字符串是否是 s 的前缀(s 是否是以这个字符串开头的)==>startwith
python">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

文件查找工具

  • 搜索的关键就是对目录结构进行遍历
    • 递归查找,遇到子目录,就进到目录里面进行查找
python">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 每次调用,都能自动的去针对子目录进行递归的操作,只需要使用上述循环,就可以把所有的路径都获取出来

http://www.ppmy.cn/news/1519007.html

相关文章

【2024】Datawhale AI夏令营-从零上手Mobile Agent-Task2笔记

【2024】Datawhale AI夏令营-从零上手Mobile Agent-Task2笔记 本文介绍通义实验室最新的多模态手机智能体工作——Mobile-Agent。 一、大模型智能体背景 1.1 大模型智能体的优势 随着大模型的高速发展,大模型智能体成为热门研究方向,受到工业界和学术…

手把手教你从开发进度划分测试

一.单元测试(Unit Testing) 单元测试:软件单元测试的对象是可独立编译或汇编的程序模块。测试的对象是软件测试中的最小单位:模块。 测试阶段:编码后或者编码前(TDD:测试驱动开发)…

2024.9.1 刷题总结

2024.9.1 **每日一题** 1450.在既定时间做作业的学生人数,这是一道简单的模拟题,我们只需要判断每个学生的作业时间是否包含询问时间即可,具体判断方法为开始时间小于等于访问时间,结束时间大于等于访问时间。 class Solution { …

SparkShop开源商城 uploadFile 任意文件上传漏洞复现

1 产品简介 SparkShop开源商城(也被称为星火商城)是一款基于ThinkPHP6和Element UI的开源免费可商用的高性能商城系统。适用于各类电商场景,包括但不限于B2C商城、新零售、分销商城等。无论是初创企业还是成熟品牌,都可以通过Spar…

Ubuntu下安装NVIDIA-SMI

环境 显卡:gt1030 系统:Ubuntu22.04 安装 1、查询显卡GeForce GT 1030 rootapq-K07-C236:/home# lspci 00:00.0 Host bridge: Intel Corporation 8th/9th Gen Core 8-core Desktop Processor Host Bridge/DRAM Registers [Coffee Lake S] (rev 0d) 0…

深入理解Java序列化:从入门到实践

在前面的学习中我们简单的学习到了对象流的使用,我们先来回顾一下 对象流 在Java中,对象流是一种特殊的输入输出流,用于处理对象的序列化和反序列化操作。对象流主要包括ObjectOutputStream和ObjectInputStream两个类。 ObjectOutputStrea…

10分钟了解OPPO中间件容器化实践

背景 OPPO是一家全球化的科技公司,随着公司的快速发展,业务方向越来越多,对中间件的依赖也越来越紧密,中间件的集群的数量成倍数增长,在中间件的部署,使用,以及运维出现各种问题。 1.中间件与业…

华为2024年秋招-结构与材料工程师-结构方向-机试题(四套)(每套四十题)

华为2024年招聘-结构与材料工程师-结构方向-机试题(四套)(每套四十题) 岗位——结构与材料工程师 岗位意向——结构 真题题目分享,完整版带答案(有答案和解析,答案非官方,未仔细校正&#xff…

【hot100篇-python刷题记录】【跳跃游戏】

R6-贪心算法 符合贪心的原因是: 我们要走到最后可以每次都选择尽可能远的来走,其次,能走到该步意味着该步以前都能到达。因此,局部最优解可以代表全局最优解。 class Solution:def canJump(self, nums: List[int]) -> bool:#最…

uniapp 封装uni.login 实现全局调用

封装utils app.vue中 使用globalData 注册 utils 页面中使用方法 定义app 调用方法

Linux 数据结构 哈希表 排序

哈希表: 哈希: 将数据通过哈希算法映射称为一个键值 存时在键值对应的位置存储 取时通过键值对应的位置查找 哈希冲突(哈希碰撞):多个数据通过哈希算法映射成同一个键值 存储数字: 排序算法: 1.冒泡排…

TeamTalk消息服务器(群组相关)

具体的流程如下介绍,后续需要着重研究数据库相关表的结构设计。 群组信令和协议设计 enum GroupCmdID {CID_GROUP_NORMAL_LIST_REQUEST 1025,CID_GROUP_NORMAL_LIST_RESPONSE 1026,CID_GROUP_INFO_REQUEST 1027,CID_GROUP_INFO_RESPONSE 1028,// ...... 暂时省…

AWS api数据信息获取(boto3)

GitHub - starsliao/TenSunS: 🦄后羿 - TenSunS(原ConsulManager):基于Consul的运维平台:更优雅的Consul管理UI&多云与自建ECS/MySQL/Redis同步Prometheus/JumpServer&ECS/MySQL/Redis云监控指标采集&Blackbox站点监控维护&漏…

亚马逊aws的弹性与可扩展性解析

欢迎来到雲闪世界。可以使用各种服务和工具在 AWS 上实现可扩展性和弹性。例如,AWS Application Auto Scaling 是一种可以自动调整容量以低成本实现出色应用程序性能的服务。这允许轻松设置跨多个服务的多个资源的应用程序扩展。让我们来谈谈弹性和可扩展性之间的区…

Magisto——AI分析视频素材,自动生成剪辑、拼接和添加音乐的成品视频

一、Magisto介绍 Magisto 是一个基于人工智能的视频编辑应用程序,旨在帮助用户快速创建专业水准的视频。它通过自动化处理,简化了视频剪辑、效果添加和音频同步等复杂步骤,使用户能够轻松地将视频、图片和音乐整合成一个完整的短片。 Magis…

81、k8s网络配置以及k8s拉取私有仓库

一、k8s架构安装部署 k8s架构master 192.168.168.81 docker、kubeadm、kubelet、kubectl、flannel node01 192.168.168.82 docker kubeadm kubelet kubectl flannel node02 192.168.168.83 docker、kubeadm、kubelet、kubectl、flannel#关闭防火墙 [rootk8s1 ~]# sys…

[Leetcode 47][Medium]-全排列 II-回溯(全排列问题)

目录 一、题目描述 二、整体思路 三、代码 一、题目描述 原题地址 二、整体思路 和上一道Leetcode46相比,有变化的地方是要排除重复组合的情况。那么在组合问题中去除重复组合的方法是先对数组进行排序,然后在回溯函数中判断当前元素与上一个元素是否相同,若相同…

【计算机组成原理】四、指令系统:3.汇编语言

5.汇编语言 文章目录 5.汇编语言5.1考试要求(408)x86汇编语言5.2地址码x86架构CPU,有哪些寄存器?总结 5.3操作码5.3.1算术运算5.3.2逻辑运算5.3.3其他 5.4循环分支5.4.1 jmp直接跳转指令5.4.2 jxxx条件跳转指令分支C→汇编循环C→…

37集【重要】编译ESP-RTC工程并运行在01-RTC开发板中

37集【重要】编译ESP-RTC工程并运行在01-RTC开发板中 开发板样子这样的: 还有配套的外壳: 开发板介绍文档如下,有需要的可以联系三哥,三哥介绍这位大拿给你: https://www.kdocs.cn/l/cqAyZ0T3Q06Y 我们把d:\Espre…

Oracle(90)如何创建用户(User)?

在Oracle数据库中,创建用户是数据库管理员(DBA)的常见任务。创建用户涉及到为用户分配用户名、密码以及权限。以下是详细的步骤和代码示例,指导你如何创建用户并为其分配权限。 创建用户的步骤 连接到数据库创建用户为用户分配权…