【Python】第八弹---掌握Python编程:从标准库到第三方库的实践应用

发布于:2025-02-24 ⋅ 阅读:(14) ⋅ 点赞:(0)

个人主页: 熬夜学编程的小林

💗系列专栏: 【C语言详解】 【数据结构详解】【C++详解】【Linux系统编程】【MySQL】【Python】

目录

 1、标准库

1.1、认识标准库

1.2、使用 import 导入模块

1.3、代码示例: 日期计算

1.4、代码示例: 字符串操作

1.5、代码示例: 文件查找工具

2、第三方库

2.1、认识第三方库

2.2、使用 pip

2.3、代码示例: 生成二维码


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

  • 荀子曰: "君子性非异也,善假于物也"

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

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

实际开发中, 也并非所有的代码都自己手写, 而是要充分利用现成的库, 简化开发过程.
 
按照库的来源, 可以大致分成两大类

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

咱们自己也可以实现 "第三方库" 发布出去, 交给别人来使用.

 
1、标准库

1.1、认识标准库


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

The Python Standard Library

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

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

 
我们不需要把这些库的内容都背下来, 只要大概知道里面有啥, 需要用的时候能够找到即可.

1.2、使用 import 导入模块

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

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

1.3、代码示例: 日期计算

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

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

date1 = datetime.datetime(2022, 1, 1)
date2 = datetime.datetime(2022, 10, 10)

print(date2 - date1)  # 计算两个时间差

  • 快来看一下你和心爱的人已经认识了多少天了. 

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

datetime — Basic date and time types

1.4、代码示例: 字符串操作

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

1) 剑指offer 58, 翻转单词顺序

字符串中的单词反转

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

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


print(reverse_word('I am a student.'))

2) leetcode 796, 旋转字符串

旋转字符串

给定两个字符串, s 和 goal。如果在若干次旋转操作之后,s 能变成 goal ,那么返回 true 。
s 的 旋转操作 就是将 s 最左边的字符移动到最右边。
例如, 若 s = 'abcde',在旋转一次之后结果就是'bcdea' 。

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


print(rotate_string('abcde',  'cdeab'))

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

给你一个字符串数组 words 和一个字符串 s ,其中 words[i] 和 s 只包含 小写英文字母 。
请你返回 words 中是字符串 s 前缀 的 字符串数目 。
一个字符串的 前缀 是出现在字符串开头的子字符串。子字符串 是一个字符串中的连续一段字符序列。

  • 依次遍历 words 中的字符串
  • 直接使用字符串的 startswith 方法即可判定当前字符串是否是 s 的前缀. 
def count_prefixes(words, s):
    cnt = 0
    for word in words:  # 依次遍历字符串
        if s.startswith(word):  # 判断是否是s的前缀
            cnt += 1
    return cnt


print(count_prefixes(["a", "b", "c", "ab", "bc", "abc"],  "abc"))

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

字符串官方文档

1.5、代码示例: 文件查找工具

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

  • 使用 os.walk 即可实现目录的递归遍历.
  • os.walk 返回一个三元组, 分别是 当前路径 , 当前路径下包含的目录名 (多个), 当前路径下包含的文件名 (多个)
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 模块的更多操作, 参考官方文档

os — Miscellaneous operating system interfaces

2、第三方库

2.1、认识第三方库

第三方库就是别人已经实现好了的库, 我们可以拿过来直接使用.
虽然标准库已经很强大了, 但是终究是有限的. 而第三方库可以视为是集合了全世界 Python 程序猿的智慧, 可以说是几乎无穷无尽.

 
问题来了, 当我们遇到一个需求场景的时候, 如何知道, 该使用哪个第三方库呢?
就需要用到下面几个网站了:

当我们确定了该使用哪个第三方库之后, 就可以使用 pip 来安装第三方库了.

2.2、使用 pip

pip 是 Python 内置的 包管理器.

  • 所谓 包管理器 就类似于我们平时使用的手机 app 应用商店一样.
  • 第三方库有很多, 是不同的人, 不同的组织实现的. 为了方便大家整理, Python 官方提供了一个网站PyPI pypi, 来收集第三方库.
  • 其他大佬写好的第三方库也会申请上传到 PyPI 上.
  • 这个时候就可以方便的使用 pip 工具来下载 PyPI 上的库了.

  • pip 在我们安装 Python 的时候就已经内置了. 无需额外安装.
  • pip 是一个可执行程序, 就在 Python 的安装目录中.

 
打开 cmd, 直接输入 pip. 如果显示以下帮助信息, 说明 pip 已经准备就绪. 

  • 如果最开始按照要求在安装 Python 的时候勾选了

  • 那么 pip 就是默认可用的.

 
如果提示

'pip' 不是内部或外部命令,也不是可运行的程序或批处理文件。

则说明没有正确的把 pip 加入到 PATH 中, 可以手动把 pip 所在的路径加入到 PATH 环境变量中

(参考windows环境下面配置pip环境变量)

  • 或者卸载重装 Python, 记得勾上上述选项, 也许是更简单的办法.

使用以下命令, 即可安装第三方库

pip install [库名]

注意: 这个命令需要从网络上下载, 使用时要保证网络畅通.
安装成功后, 即可使用 import 导入相关模块, 即可进行使用.

注意: 如果使用 pip 安装完第三方库之后, 在 PyCharm 中仍然提示找不到对应的模块, 则检查 Settings ->Project -> Python Interpreter , 看当前 Python 解释器设置的是否正确. (如果一个机器上安装了多个版本的 Python, 容易出现这种情况).

2.3、代码示例: 生成二维码

(1) 通过搜索引擎, 确定使用哪个库

得到情报, qrcode 这个库, 可以用来生成二维码

(2) 查看 qrcode 文档

在 PyPI 上搜索 qrcode


点击则进入 qrcode 的详情页.

文档开头描述了如何安装 qrcode

页面中央位置描述了 qrcode 库的使用方法

(3) 使用 pip 安装

pip install qrcode[pil]
  • 注意: pip 安装的时候可能会有警告, 提示使用的 pip 版本太低. 这个警告我们不必处理, 不影响我们正常使用.

(4) 编写代码

按照文档给出的示例, 模仿一段代码

import qrcode


img = qrcode.make('小林真帅')
img.save('qrcode.png')

运行完毕后, 得到结果如下:


使用支某宝其他工具扫码, 即可看到二维码内容.

  • 所谓二维码, 本质上就是使用黑白点阵表示一个字符串.
  • 我们日常使用的二维码内部一般是一个 URL, 扫码后会自动跳转到对应的地址, 从而打开一个网页.

 注意:微信查看不了文本内容的二维码!!!


网站公告

今日签到

点亮在社区的每一天
去签到