Python---库的使用

news2024/10/5 16:24:35

专栏:python
个人主页:HaiFan.
专栏简介:本专栏主要更新一些python的基础知识,也会实现一些小游戏和通讯录,学时管理系统之类的,有兴趣的朋友可以关注一下。

  • 前言
  • 标准库
  • 使用import导入模块
  • 例1
  • 例2
  • 例3 文件查找工具
  • pip的使用
  • 鼓励师


前言

库就是别人已经写好的代码,我们可以直接使用。

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

  1. 标准库:Python自带的库,只要安装了Python就可以使用
  2. 第三方库:其他人实现的库,要想使用,需要额外安装。

在这里插入图片描述


标准库

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

Python官方文档

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

  • 内置函数(print,input)
  • 内置类型(int,str,bool,list,dict)
  • 文本处理
  • 时间日期
  • 数学计算
  • 文件目录
  • 数据存储
  • 加密解密
  • 操作系统相关
  • 并发编程相关
  • 等等

当然,这么多东西不需要全部背下来,只要大概的了解即可,需要用的时候直接找就行。

使用import导入模块

使用import可以导入标准库的一个模块

import [模块名]

所谓模块,就是一个单独的.py文件
使用import语句可以把这个外部的.py导入到当前.py文件中,并执行其代码

例1

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

  • 使用 import 语句导入标准库的 datetime 模块
  • 使用 datetime.datetime 构造两个日期. 参数使用 年, 月, 日 这样的格式.
  • 两个日期对象相减, 即可得到日期的差值.

快来计算一下你和你喜欢的人已经认识多少天了,哈哈哈。

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

import datetime

date1 = datetime.datetime(2003, 3 , 12)
date2 = datetime.datetime(2023, 1 , 26)

print(date2 - date1)

在这里插入图片描述

例2

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

题目来源力扣

  • 使用 str 的 split 方法进行字符串切分, 指定 空格 为分隔符. 返回结果是一个列表.
  • 使用列表的 reverse 方法进行逆序.
  • 使用 str 的 join 方法进行字符串拼接. 把列表中的内容进行合并
def reverseWords(s):
    tokens = s.split()
    tokens.reverse()
    return ' '.join(tokens)

a = str(input())

print(reverseWords(a))

在这里插入图片描述

例3 文件查找工具

指定一个待搜索路径,同时指定一个待搜索的关键字。
在待搜索路径中查找是否文件名中包含这个关键字。

  • 使用 os.walk 即可实现目录的递归遍历.
  • os.walk 返回一个三元组, 分别是 当前路径 , 当前路径下包含的目录名 (多个), 当前路径下包含的文件
    名 (多个)

dirpath:遍历到当前位置,对应的路径是什么
dirnames:当前目录下,都有哪些目录,是一个列表,可以包含多个目录
filenemes:当前目录下,都有哪些文件名,是一个列表,可以包含多个文件名

import os

CinPath = input('请输入待搜索的路径:')
Pattern = input('请输入待搜索的关键字:')

for dirpath ,dirnames,filenames in os.walk(CinPath):
    for f in filenames:
        if Pattern in f:
            print(f'{dirpath}/{f}')

在这里插入图片描述

在这里插入图片描述

通过这个简单的代码,就可以实习文件搜索。

pip的使用

第三方库就是别人已经实现好的库,我们可以直接拿来使用。虽然标准库已经很强大了, 但是终究是有限的. 而第三方库可以视为是集合了全世界 Python 程序猿的智
慧, 可以说是几乎无穷无尽。问题来了, 当我们遇到一个需求场景的时候, 如何知道, 该使用哪个第三方库呢?
就需要用到下面几个网站了:百度,361,等浏览器当我们确定了该使用哪个第三方库之后, 就可以使用 pip 来安装第三方库了.


pip 是 Python 内置的 包管理器.
所谓的包管理器就类似于我们平时使用的手机应用商店一样。第三方库有很多, 是不同的人, 不同的组织实现的. 为了方便大家整理, Python 官方提供了一个网站PyPI https://pypi.org/, 来收集第三方库.其他大佬写好的第三方库也会申请上传到 PyPI 上.
这个时候就可以方便的使用 pip 工具来下载 PyPI 上的库了.pip 在我们安装 Python 的时候就已经内置了. 无需额外安装.pip 是一个可执行程序, 就在 Python 的安装目录中。

使用pip install [库名]就可以安装第三方库。安装成功后,即可使用import导入相关模块。

第三方库实战:自动生成二维码

鼓励师

监听键盘按键, 每按键 20 下, 就自动播放一个音频, 鼓励一下辛苦搬砖的自己。

安装第三方库


  • pynput用于监听键盘按键,注意版本不要用最新版本
  • playsound用于播放音频

准备音频文件


编写代码

使用 from import 的格式直接导入模块中的指定对象/函数.
使用 keyboard.Listener 监听键盘按键. 其中 on_release 会在释放按键时被调用.
使用 listener.start 启动监听器. 为了防止程序直接退出, 使用 listener.join 让程序等待用户按键.
使用 count 计数, 每隔 10 次, 调用 playsound 播放音频文件.

from pynput import keyboard

def onRelease(key):
    """
    这个函数,就是在用户释放键盘案件的时候,就会被调用
    这恶鬼函数不是咱们自己调用的,是把这个函数交给了Listener
    由Listener在用户释放案件的时候,自动调用
    像这种不是用户自己调用的,而是交给别人,在合适的时候调用
    这样的函数称为回调函数
    :param key://用户按下了哪个键
    :return:
    """
    print(key)

#当我们创建好这个listener之后,用户的键盘震动就会被监视
#还希望在捕获到之后能够执行一段代码
listener = keyboard.Listener(on_release=onRelease)
listener.start()
listener.join()

通过这个代码,就可以捕获敲的键了。

在这里插入图片描述

from pynput import keyboard
from playsound import playsound

cnt: int = 0


def onRelease(key):
    """
    这个函数,就是在用户释放键盘案件的时候,就会被调用
    这恶鬼函数不是咱们自己调用的,是把这个函数交给了Listener
    由Listener在用户释放案件的时候,自动调用
    像这种不是用户自己调用的,而是交给别人,在合适的时候调用
    这样的函数称为回调函数
    :param key://用户按下了哪个键
    :return:
    """
    print(key)
    global cnt
    cnt += 1
    if cnt % 10 == 0:  # 播放音频的条件
        # 播放音频
        playsound('music/1.mp3')


# 当我们创建好这个listener之后,用户的键盘震动就会被监视
# 还希望在捕获到之后能够执行一段代码
listener = keyboard.Listener(on_release=onRelease)
listener.start()
listener.join()

这样,就能播放音频了。海阔天空yyds。




emm,Python的基础知识已经结束了,希望对大家有所帮助,明天会给大家带来学生管理系统。

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

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

相关文章

老司机经验分享:生产级中间件系统架构设计实践

目录 1、Master-Slave架构2、异步日志持久化机制3、检查点机制:定时持久化全量数据4、引入检查点节点5、总结 & 思考 这篇文章,给大家来聊一个生产级的中间件系统的架构设计实践,希望给对中间件系统感兴趣的同学一点启发。 1、Master-S…

【Java|golang】1663. 具有给定数值的最小字符串---int32切片类型转化string

小写字符 的 数值 是它在字母表中的位置(从 1 开始),因此 a 的数值为 1 ,b 的数值为 2 ,c 的数值为 3 ,以此类推。 字符串由若干小写字符组成,字符串的数值 为各字符的数值之和。例如&#xff…

修改VS2015的文件编码格式为utf8,解决在Ubuntu下中文输出为乱码的问题

开发环境: Windows系统:Windows 10 家庭版,VS2015社区版 Linux系统:Ubuntu 22.04 LTS Server版,gcc version 11.3.0 (Ubuntu 11.3.0-1ubuntu1~22.04) 今天编写跨平台的代码,在Windows下用VS2015编写&a…

C++ AVL树

前言 众所周知红黑树是由AVL树改进得来的,想要深入学习哈希表的底层存储那么AVL的学习就相当有必要了。 本来想将AVL的插入删除都能实现,但是在写删除功能时碰到了难题和Bug,所以暂时先给出插入的实现过程,和删除功能的实现思路 …

【日常系列】LeetCode《29·动态规划4》

数据规模->时间复杂度 <10^4 &#x1f62e;(n^2) <10^7:o(nlogn) <10^8:o(n) 10^8<:o(logn),o(1) 内容 字符串/数组dp问题 动态规划中的双状态问题 lc 139【top100】&#xff1a;单词拆分 https://leetcode.cn/problems/word-break/ 提示&#xff1a; 1 <…

Qt扫盲-QHttpPart类理论总结

QHttpPart类理论总结一、概述二、使用1. 设置头2. 设置内容一、概述 QHttpPart类保存一个主体部分&#xff0c;用于HTTP multipart MIME消息中(由QHttpMultiPart类表示)。 QHttpPart由一个头块和一个数据块组成&#xff0c;它们由两个连续的新行相互分隔。一个部分的例子是: …

智能合约开发——Sui/Move vs. Solana/Rust

1. 引言 前序博客有&#xff1a; zkMove——针对Move合约生态的zkVM 定位为高性能L1的Aptos和Sui&#xff0c;均采用Move合约编程语言。Solana也定位为高性能L1&#xff0c;但其采用Rust合约编程语言。本文重点对比Sui/Move和Solana/Rust合约编程语言。【Aptos/Move为不同的M…

三、Java框架之SpringMVC1_MVC基础

文章目录1. SpringMVC简介1.1 回顾Servlet技术1.2 SpringMVC入门案例步骤1&#xff1a;创建javaweb项目&#xff0c;并导入jar包步骤2&#xff1a;创建Controller步骤3&#xff1a;创建SpringMVC的配置文件步骤4&#xff1a;使用配置类替换web.xml步骤5&#xff1a;启动项目并访…

PyTorch深度学习实践第二讲线性模型

目录监督学习四步骤线性模型泛化代码作业监督学习四步骤 DataSet&#xff08;数据集&#xff09;Model&#xff08;模型选择和设计&#xff0c;例如神经网络&#xff0c;决策树等&#xff09;Training&#xff08;大部分模型都需要训练&#xff0c;都有些例如KNN不需要训练&am…

BFS(四)127. 单词接龙、433. 最小基因变化

目录 127. 单词接龙 433. 最小基因变化 127. 单词接龙 字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列 beginWord -> s1 -> s2 -> ... -> sk&#xff1a; 每一对相邻的单词只差一个字母。 对于 1 < i < k 时&am…

Qt 6.x中Qt Quick简介及示例

Qt Quick首次在Qt 4.7和Qt Creator 2.1中引入&#xff0c;是一种高级UI技术。 Qt Quick模块是用于编写QML(Qt Meta-Object Language, Qt元对象语言)应用程序的标准库。Qt QML模块提供了QML引擎(engine)和语言基础设施&#xff0c;而Qt Quick模块提供了使用QML创建用户界面…

LCD timing的理解

前言 LCD的时序,之前也有介绍过(深入裸机),但是在介绍这些参数的时候是以感性的认识去理解的,而且多少有些错误,我们以内核文档中的描述为准(Documentation/fb/framebuffer.txt),在结合全志平台来重新正确的理解这些参数。 我们在看下文档中的解释: The frame buffe…

【学习笔记】智能合约引擎

图片来源&#xff1a;https://www.researchgate.net/publication/336453428_Detecting_nondeterministic_payment_bugs_in_Ethereum_smart_contracts/figures?lo1智能合约是区块链技术的核心。我们可以根据以下公式定义智能合约智能合约事务处理和保存机制完备的状态机智能合约…

【手写 Promise 源码】第一篇 - Promise 简介

一&#xff0c;前言 上一篇&#xff0c;完成了 Promise 源码学习的目录&#xff1b; 本篇&#xff0c;主要对 Promise 进行简单的概括介绍&#xff1b; 二&#xff0c;Promise 简介 Promise 是一个类或构造函数&#xff0c;是 JS 原生提供的&#xff0c;通过实例化 Promise …

【Java】还不懂this关键字?一分钟彻底弄懂this关键字

博主简介&#xff1a;努力学习的预备程序媛一枚~博主主页&#xff1a; 是瑶瑶子啦所属专栏: Java岛冒险记【从小白到大佬之路】 前言 问题&#xff1a;为什么会存在this? 在上一篇【JavaSE】一文看懂构造器/构造方法&#xff08;Cunstructor&#xff09;中&#xff0c;我们已…

更方便Spring存储和读取对象,五大类注解、@Bean、@Autowired、@Resource

上一篇博客我们介绍了如何使用xml来引入bean对象&#xff0c;当项目多的时候&#xff0c;显然那样是比较麻烦的。现在我们只需要 个注解就可以替代了。注意&#xff1a;注解和xml可以同时使用准备工作:配置扫描路径我们需要配置 下存储对象的扫描包路径&#xff0c;只有被配置的…

利用Windows系统服务进行权限提升

提权是后渗透重要的一环节&#xff0c;如果当前获取的用户权限比较低&#xff0c;那么我们将无法访问受保护的系统资源或执行系统管理操作&#xff0c;影响后续的攻击过程。这要求我们通过各种手段将当前用户的权限进行提升&#xff0c;以满足后续攻击的要求。利用系统服务提权…

VUE2--22.11.23

VUE2一、Vue.js devtools二、Vue简介1、什么是Vue2、Vue的特性1.数据驱动视图2.双向数据绑定3.MVVM三、Vue的基本使用1、基本使用步骤四、Vue的指令与过滤器1、什么是指令2、内容渲染指令1.v-text2.{{}}3.v-html3、属性绑定指令4、事件绑定指令5、双向绑定指令6、条件渲染指令7…

【Linux】动静态库、文件的三个时间

1.文件的三个时间Access: 访问时间&#xff0c;访问的频率很高&#xff0c;所以较新的Linux都是按一定的时间间隔刷新Modify: 修改文件内容时间Change:修改文件属性时间&#xff0c;修改文件内容也会修改文件属性makefile自动编译判断文件是否为最新&#xff1a;就是按可执行程…

运动基元(一):Dubin‘s曲线【part3】

3.5 RLR RLR的第一段圆弧的曲率 k 1 = − k m a x < 0 → s i g n ( k 1 ) = − 1 k_1=-k_{max}<0\rightarrow si