[Python][认识标准库][标准库][第三方库]详细讲解

目录

  • 1.标准库
    • 1.认识标准库
    • 2.使用import导入模块
  • 2.代码示例
    • 1.日期计算
    • 2.字符串操作
      • 1.翻转单词顺序
      • 2.旋转字符串
      • 3.统计是给定字符串前缀的字符串数目
    • 3.文件查找工具
  • 3.第三方库
    • 1.使用 pip
    • 2.示例:生成二维码
    • 3.示例:操作Excel
    • 4.示例:程序员鼓励师


1.标准库

1.认识标准库

  • 在Python官方文档上可以看到这些库的内容
  • 简单来说,主要包含
    • 内置函数 (如 print, input 等)
    • 内置类型 (针对 int, str, bool, list, dict 等类型内置的操作)
    • 文本处理
    • 时间日期
    • 数学计算
    • 文件目录
    • 数据存储(操作数据库,数据序列化等)
    • 加密解密
    • 操作系统相关
    • 并发编程相关(多进程,多线程,协程,异步等)
    • 网络编程相关
    • 多媒体相关(音频处理,视频处理等)
    • 图形化界面相关
    • ……

2.使用import导入模块

  • Python通过模块来体现""
  • 使用import可以导入标准库的一个模块
    # 导入模块
    import [模块名]# 从 模块 导入 类型
    from [模块名] import [类型名]# 给模块起别名,方便后续使用
    import [模块名] as [别名]
    
  • 模块:一个单独的.py文件
    • 使用import语句可以把这个外部的.py文件导入到当前.py文件中,并执行其中的代码

2.代码示例

1.日期计算

  • 输入任意的两个日期,计算两个日期之间隔了多少天
    • 使用import语句导入标准库的datetime模块
    • 使用datetime.datetime构造两个日期,参数使用年, 月, 日这样的格式
    • 两个日期对象相减,即可得到日期的差值
      import datetimedate1 = datetime.datetime(2024, 5, 2)
      date2 = datetime.datetime(2024, 3, 30)print(date1 - date2)
      
  • 关于datetime的更多操作,可以参考官方文档

2.字符串操作

  • 字符串是Python的内置类型,字符串的很多方法不需要导入额外的模块,即可直接使用
  • 字符串的更多操作,可以参考官方文档

1.翻转单词顺序

  • 题目链接
  • 操作步骤
    • 使用strsplit()进行字符串切分,指定空格为分隔符,返回结果是一个列表
    • 使用列表的reverse()进行逆序
    • 使用strjoin()进行字符串拼接,把列表中的内容进行合并
      def ReverseWords(s):tokens = s.split(' ')tokens.reverse()return ' '.join(tokens)print(reverseWords('I am a student.'))
      

2.旋转字符串

  • 题目链接
  • 操作步骤
    • 使用len()求字符串的长度,如果长度不相同,则一定不能旋转得到
    • s和自己进行拼接,然后直接使用in方法来判定goal是否是s + s的子串
      def RotateString(s, goal):return len(s) == len(goal) and goal in s + sprint(rotateString('abcde', 'cdeab'))
      

3.统计是给定字符串前缀的字符串数目

  • 题目链接
  • 操作步骤
    • 依次遍历words中的字符串
    • 直接使用字符串的startswith()即可判定当前字符串是否是s的前缀
      def CountPrefixes(words, s):res = 0   # 符合要求字符串个数for word in words:if s.startswith(word):res += 1return resprint(countPrefixes(["a","b","c","ab","bc","abc"], "abc"))
      

3.文件查找工具

  • 指定一个待搜索路径,同时指定一个待搜索的关键字
  • 在待搜索路径中查找是否文件名中包含这个关键字
    • 使用os.walk()即可实现目录的递归遍历
    • os.walk()返回一个三元组,分别是当前路径 ,当前路径下包含的目录名(多个),当前路径下包含的文件名(多个)
      import osinputPath = input('请输入待搜索路径: ')
      pattern = input('请输入待搜索关键词: ')for dirpath, dirnames, filenames in os.walk(inputPath):for f in filenames:if pattern in f:print(f'{dirpath}/{f}')
      
  • os模块的更多操作,参考官方文档

3.第三方库

1.使用 pip

  • pip是Python内置的包管理器
    • Python官方提供了一个网站PyPI,来收集第三方库
  • 安装第三方库pip install [库名]
    • 安装成功后,即可使用import导入相关模块,即可进行使用
  • 注意
    • 如果使用pip安装完第三方库之后,在PyCharm中仍然提示找不到对应的模块,则检查Settings -> Project -> Python Interpreter,看当前Python解释器设置的是否正确
    • 如果一个机器上安装了多个版本的Python,容易出现这种情况

2.示例:生成二维码

  • 通过搜索引擎,确定使用哪个库
    • 得知qrcode这个库,可以用来生成二维码
  • 在PyPi上搜索qrcode
    • pip install qrcode[pil]
  • 使用:文档上有介绍使用方法
    import qrcodeimg = qrcode.make('SnowK')
    img.save('SnowK.png')
    

3.示例:操作Excel

  • 读取Excel可以使用xlrd模块,文档地址
  • 修改Excel可以使用xlwt模块,文档地址
  • 下面以xlrd为例
  • 安装pip install xlrd==1.2.0
  • 编写代码
    • 使用open_workbook()打开一个Excel文件
    • 使用xlsx.sheet_by_index(0)获取到0号标签页
    • 使用table.nrows()获取到表格的行数
    • 使用table.cell_value(row, col)获取到表格中row, col位置的元素值
      import xlrd# 1. 打开 xlsx 文件
      xlsx = xlrd.open_workbook('D:/test.xlsx')# 2. 获取 0 号标签页. (当前只有一个标签页)
      table = xlsx.sheet_by_index(0)# 3. 获取总行数
      nrows = table.nrows# 4. 遍历数据
      count = 0
      total = 0
      for i in range(1, nrows):# 使用 cell_value(row, col) 获取到指定坐标单元格的值.classId = table.cell_value(i, 1)if classId == 100:total += table.cell_value(i, 2)count += 1print(f'平均分: {total / count}')
      

4.示例:程序员鼓励师

  • 功能:监听键盘按键,每按键20下,就自动播放一个音频,鼓励一下辛苦搬砖的自己
  • 安装第三方依赖
    • pynput用于监听键盘按键,注意版本不要用最新
    • playsound用于播放音频
      pip install pynput==1.6.8
      pip install playsound==1.2.2
      
  • 准备音频文件,放到和.py代码同级目录中
  • 编写代码
    • 使用from import的格式直接导入模块中的指定对象/函数
    • 使用keyboard.Listener()监听键盘按键,其中on_release()会在释放按键时被调用
    • 使用listener.start()启动监听器
    • 为了防止程序直接退出,使用listener.join()让程序等待用户按键
    • 使用count计数,每隔20次,调用playsound()播放音频文件
      from pynput import keyboard
      from playsound import playsoundcount = 0def OnRelease(key):print(key)global countcount += 1if count % 20 == 0:playsound('ding.mp3')listener = keyboard.Listener(on_release=OnRelease) # 关键字参数传参
      listener.start()
      listener.join()
      
  • 改进代码:上述代码在执行过程中,会感觉到播放音频会导致按键卡顿,可以使用多线程解决这个问题
    • 使用threading.Thread引入多线程类
    • 使用Thread的构造函数来构造一个线程
      • target表示线程要执行的任务
      • args表示target中要调用函数的参数
    • 使用Thread.start()启动线程
from pynput import keyboard
from playsound import playsound
from threading import Threadcount = 0
def OnRelease(key):print(key)global countcount += 1if count % 10 == 0:t = Thread(target=playsound, args=('ding.mp3',))t.start()listener = keyboard.Listener(on_release=OnRelease)
listener.start()
listener.join()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/49805.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink SQL 的工作机制

前言 Flink SQL 引擎的工作流总结如图所示。 从图中可以看出,一段查询 SQL / 使用TableAPI 编写的程序(以下简称 TableAPI 代码)从输入到编译为可执行的 JobGraph 主要经历如下几个阶段: 将 SQL文本 / TableAPI 代码转化为逻辑执…

svelte - 5. 动画

动画函数 函数作用使用场景示例引入的模块使用示例tweened运动动画,做到渐变的效果控制进度条速度svelte/motion函数:tweened(0, { duration: 400 })spring运动动画,用于频繁变化的值控制鼠标红点顺滑度svelte/motion函数:spring({ x: 50, y: 50 }, { stiffness: 0.1, damp…

华为ensp中ISIS原理与配置(超详细)

isis原理与配置 8-20字节; 地址组成:area id,system id,set三部分组成; system id占6个字节;sel占一个,剩下的为area id区域号; system id 唯一, 一般将router id 配…

操作系统面试知识点总结3

#来自ウルトラマンメビウス(梦比优斯) 1 内存管理概念 1.1 内存管理的基本原理和要求 内存:内存可存放数据,程序执行前需要先放到内存中才能被 CPU 处理 -- 缓和 CPU 与硬盘之间的速度矛盾。 功能: 内存空间的分配与…

深入学习H264和H265

目录 前言 一 什么是H264/H265? H.264 (MPEG-4 AVC) H.265 (HEVC) 二 为什么要学习H264和H265? 1. 深入理解视频压缩原理 2. 硬件优化与集成 3. 调试与故障排除 4. 持续的技术更新 三 NAL(Network Abstraction Layer)详解…

【Git】日常使用

参考 Git分支管理 如何使用 Git 进行多人协作开发 01 拉取最新分支 git pull origin main 02 创建分支 git checkout -b dev 03 在dev分支上进行更改 git commit git push dev 04 GitHub网页上提pull request,merge到main 05 删除分支 删除本地的dev分支和对…

【前端 11】初探DOM

JavaScript 对象 - DOM 初探 在Web开发中,DOM(Document Object Model,文档对象模型)是一个至关重要的概念。它不仅仅是一个API,更是Web页面与JavaScript代码之间的桥梁,允许开发者通过编程的方式动态地访问…

Redis:快速键值存储的入门指南

一、什么是Redis? Redis,全称为Remote Dictionary Server,是一种开源的、高性能的键值(Key-Value)存储系统。与传统的关系型数据库不同,Redis将数据主要存储在内存中,因此能够提供极低延迟的数…

【Unity2D 2022:UI】TextMeshPro组件无法显示中文

在Unity中创建了一个预制体Card,上面挂载了一些Text Mesh Pro组件用来显示卡牌信息。但是在输入文字后,发现无法显示中文: 解决方法如下: 一、导入字体文件(ttf格式)和常用字字集(txt格式&…

Linux--Socket编程UDP

前文:Socket套接字编程 UDP协议特点 无连接:UDP在发送数据之前不需要建立连接,减少了开销和发送数据之前的时延。尽最大努力交付:UDP不保证可靠交付,主机不需要维持复杂的连接状态表。面向报文:UDP对应用层…

算法:[递归/搜索/回溯]二叉树的深搜

目录 题目一:计算布尔二叉树的值 题目二:求根节点到叶节点数字之和 题目三:二叉树剪枝 题目四:验证二叉搜索树 题目五:二叉搜索树中第k小的元素 题目六:二叉树的所有路径 题目一:计算布尔…

前端调接口拿到数据之后,复制文本

一、使用navigator.clipboard对获取的内容进行复制。 需要注意navigator.clipboard使用的条件是: 1.通过 HTTPS 协议访问的页面 2.本地开发服务器上的页面,即 URL 为 http://localhost。经测试http://127.0.0.1,这个是不能使用的。 3.直接…

【C语言】宏定义常量加 ; 的错误

我在使用宏定义常量定义二维数组的时候,编译器报错:应输入“]”,如下: 原因是宏定义不是C语言规定的语句,它的结尾不加 ; 。在上图的 int mine[EASY_ROWS][EASY_COLS]; 中,把 EASY_ROWS 替换为了 9;2; &…

【VUE3】vue3 面试知识点

1. Vue 3 相比 Vue 2 的主要改进 Composition API:引入了一套基于函数的 API,允许以更灵活和可复用的方式组织组件逻辑。性能提升:通过改进虚拟 DOM 的算法和底层架构,实现了更快的渲染速度和更低的内存使用率。TypeScript 支持&…

【秋招笔试题】小明的美食

解析&#xff1a;思维题。由于需要互不相同&#xff0c;每次操作取重复的值与最大值相加即可&#xff0c;这样即可保证相加后不会新增重复的值。因此统计重复值即可。 #include <iostream> #include <algorithm>using namespace std; const int maxn 1e5 5; int…

大模型算法面试题(十一)

本系列收纳各种大模型面试题及答案。 1、说一下目前主流或前沿的预训练模型&#xff0c;包括nlp&#xff08;百度ERNIE3.0&#xff0c;华为NEZHA&#xff0c;openAI gpt-3&#xff0c;nvidia MegatronLM&#xff0c;macrosoft T5&#xff09;和cv&#xff08;我只知道CLIP&…

wordpress主题Typecho仿百度响应式主题Xaink

wordpress主题Typecho仿百度响应式主题Xaink 新闻类型博客主题&#xff0c;简洁好看&#xff0c;适合资讯类、快讯类、新闻类博客建站&#xff0c;响应式设计&#xff0c;支持明亮和黑暗模式 直接下载 zip 源码->解压后移动到 Typecho 主题目录->改名为xaink->启用

内衣洗衣机和手洗哪个干净?推荐五款品质优良精品

在日常生活中&#xff0c;内衣洗衣机已成为现代家庭必备的重要家电之一。选择一款耐用、质量优秀的内衣洗衣机&#xff0c;不仅可以减少洗衣负担&#xff0c;还能提供高效的洗涤效果。然而&#xff0c;市场上众多内衣洗衣机品牌琳琅满目&#xff0c;让我们往往难以选择。那么&a…

实时捕获数据库变更

1.CDC概述 CDC 的全称是 Change Data Capture &#xff0c;在广义的概念上&#xff0c;只要能捕获数据变更的技术&#xff0c;我们都可以称为 CDC 。我们目前通常描述的CDC 技术主要面向数据库的变更&#xff0c;是一种用于捕获数据库中数据变更的技术&#xff0c;CDC 技术应用…

pytorch backbone

1 简介 在PyTorch深度学习中&#xff0c;预训练backbone&#xff08;骨干网络&#xff09;是一个常见的做法&#xff0c;特别是在处理图像识别、目标检测、图像分割等任务时。预训练backbone通常是指在大型数据集&#xff08;如ImageNet&#xff09;上预先训练好的卷积神经网络…