✨个人主页: 熬夜学编程的小林
💗系列专栏: 【C语言详解】 【数据结构详解】【C++详解】【Linux系统编程】【MySQL】【Python】
目录
库 就是是别人已经写好了的代码, 可以让我们直接拿来用.
- 荀子曰: "君子性非异也,善假于物也"
一个编程语言能不能流行起来, 一方面取决于语法是否简单方便容易学习, 一方面取决于生态是否完备.
- 所谓的 "生态" 指的就是语言是否有足够丰富的库, 来应对各种各样的场景.
实际开发中, 也并非所有的代码都自己手写, 而是要充分利用现成的库, 简化开发过程.
按照库的来源, 可以大致分成两大类
- 标准库: Python 自带的库. 只要安装了 Python 就可以直接使用.
- 第三方库: 其他人实现的库. 要想使用, 需要额外安装.
咱们自己也可以实现 "第三方库" 发布出去, 交给别人来使用.
1、标准库
1.1、认识标准库
Python 自身内置了非常丰富的库.
在 Python 官方文档上可以看到这些库的内容.
简单来说, 主要是这些部分:
- 内置函数 (如 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 环境变量中
- 或者卸载重装 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, 扫码后会自动跳转到对应的地址, 从而打开一个网页.
注意:微信查看不了文本内容的二维码!!!