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

ops/2024/10/18 2:26:17/

目录

  • 1.标准库
  • 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.第三方库

pip_128">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.ppmy.cn/ops/84786.html

相关文章

python selenium selenium-wire使用代理

前言 最近使用selenium、selenium-wire爬取数据,在使用代理时查阅很多资料,在使用过程中发现很多资料、博客中都是错误的用法,误导初学selenium使用代理的开发者 描述: 我这里使用的是Python 3.12.2 selenium4.23.1 seleni…

React: class 和 style

一、class 1、在react中使用className属性来绑定类名 <div className"header flex-middle-middle">添加2个类名 </div>2、动态添加类名 <div className{item ${nameactive ? active : }}>动态添加active类名 </div>二、style 1、react中…

MongoDB - 聚合阶段 $match、$sort、$limit

文章目录 1. $match 聚合阶段1. 构造测试数据2. $match 示例3. $match 示例 2. $sort 聚合阶段1. 排序一致性问题2. $sort 示例 3. $limit 聚合阶段 1. $match 聚合阶段 $match 接受一个指定查询条件的文档。 $match 阶段语法&#xff1a; { $match: { <query> } }$ma…

【SOC 芯片设计 DFT 学习专栏 -- DFT DRC规则检查】

请阅读【嵌入式及芯片开发学必备专栏】 请阅读【芯片设计 DFT 学习系列 】 如有侵权&#xff0c;请联系删除 转自&#xff1a; 芯爵ChipLord 2024年07月10日 12:00 浙江 文章目录 概述DRC的概念Tessent DRC检查的概述时钟相关检查扫描相关检查BIST规则检查预DFT时钟规则检查 …

node后端项目使用webpack打包教程,target: “node“

node后端项目使用webpack打包教程 安装webpack webpack-cli pnpm add webpack webpack-cli -Dwebpack 能够为多种环境 或 target构建编辑。想要理解什么是target的详细信息。 taget string [string] false 告知 webpack 为目标(target)指定一个环境。默认值为 browserslist&a…

SEO与数据中心代理IP的结合能带来哪些便利?

本文将探讨将SEO与数据中心代理IP结合所带来的好处&#xff0c;以及如何利用这种组合来提升网站在搜索引擎中的排名和可见性。 1. 数据中心代理IP的作用和优势 数据中心代理IP指的是由数据中心提供的IP地址&#xff0c;用于隐藏真实服务器的位置和身份。与其他类型的代理IP相…

Winform上位机TCP客户端/服务端、串口通信

Winform上位机TCP客户端/服务端、串口通信 背景 日常练习&#xff0c;着急换工作&#xff0c;心态都快乱了。 工具 串口调试助手 网络调试助手 代码 客户端 using Microsoft.VisualBasic.Logging; using System.Net.Sockets; using System.Text;namespace TcpClientDem…

Arraylist与LinkedList的区别

Arraylist 概念 Arraylist非线程安全Arraylist 底层使用的是Object数组ArrayList 采用数组存储&#xff0c;插入和删除元素的时间复杂度受元素位置的影响ArrayList 支持快速随机访问,就是通过元素的序号快速获取元素对象ArrayList的空间浪费主要体现在列表的结尾会预留一定的容…