【Python】标准库的使用

打印 上一主题 下一主题

主题 986|帖子 986|积分 2958

Python 通过模块来体现“库”

  • 降低了程序猿的学习成本
  • 提高了程序的开发服从
就是是别人已经写好了的代码,可以让我们直接拿来用
   荀子曰: “君子性非异也,善假于物也”
  一个编程语言能不能流行起来,一方面取决于语法是否简单方便容易学习,一方面取决于生态是否完备
   所谓的 “生态” 指的就是语言是否有充足丰富的库, 来应对各种各样的场景
  现实开发中,也并非所有的代码都自己手写,而是要充分使用现成的库,简化开发过程
按照库的泉源,可以大抵分成两大类


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

Python 自身内置了非常丰富的库.,在 Python 官方文档上可以看到这些库的内容
https://docs.python.org/3.10/library/index.html
简单来说, 主要是这些部分:


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

日期计算

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


  • 使用 import 语句导入标准库的 datetime 模块
  • 使用 datetime.datetime 构造两个日期,参数使用年,月,日如许的格式
  • 两个日期对象相减,即可得到日期的差值
  1. import datetime  
  2.   
  3. date1 = datetime.datetime(2004,2,23)  
  4. date2 = datetime.datetime(2024,9,1)  
  5. print(date2 - date1)
  6. """
  7. 运行结果
  8. 7496 days, 0:00:00
  9. """
复制代码
或者如许行写
  1. from datetime import datetime  
  2.   
  3. date1 = datetime(2004,2,23)  
  4. date2 = datetime(2024,9,1)  
  5. print(date2 - date1)
  6. """
  7. 运行结果
  8. 7496 days, 0:00:00
  9. """
复制代码
或者如许写,将模块名重命名一下
  1. import datetime as dt  
  2.   
  3. date1 = dt.datetime(2004,2,23)  
  4. date2 = dt.datetime(2024,9,1)  
  5. print(date2 - date1)
复制代码
  关于 datetime 的更多操作,可以参考官方文档
https://docs.python.org/3/library/datetime.html
  字符串操作

字符串是 Python 的内置范例,字符串的许多方法不需要导入额外的模块,即可直接使用
剑指offer 58,翻转单词顺序

https://leetcode.cn/problems/fan-zhuan-dan-ci-shun-xu-lcof/description/
   输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。

  思绪


  • 针对上述字符串,使用空格进行切分。split 方法,可以指定分隔符,把字符串分成多个部分,放到一个 list 内里
  • 针对方才的切分效果列表,进行逆序==> reverse
  • 将逆序后的列表,组合起来==> join
  1. def reverseWords(s: str):  
  2.     tokens = s.split(' ')  
  3.     tokens.reverse()  
  4.     return ' '.join(tokens)
复制代码


  • s: str 是声明 s 是一个字符串变量
leetcode 796,旋转字符串

https://leetcode.cn/problems/rotate-string/
   给定两个字符串,s 和 goal。假如在多少次旋转操作之后,s 能变成 goal ,那么返回 true 。
s 的旋转操作就是将 s 最左边的字符移动到最右边。
例如,若 s = 'abcde',在旋转一次之后效果就是 'bcdea'

  思绪



  • 使用 len 求字符串的长度,假如长度不类似,则一定不能旋转得到
  • 将 s 和自己进行拼接,然后直接使用 in 方法来判定 goal 是否是 s + s 的子串.
  1. def rotateSstring(s, goal):  
  2.     if len(s) != len(goal):  
  3.         return False  
  4.     return goal in (s+s)
复制代码
leetcode 2255,统计是给定字符串前缀的字符串数目

https://leetcode.cn/problems/count-prefixes-of-a-given-string/
   给你一个字符串数组 words 和一个字符串 s ,此中 words 和 s 只包含小写英笔墨母。
请你返回 words 中是字符串 s 前缀的字符串数目。
一个字符串的 前缀 是出现在字符串开头的子字符串。子字符串是一个字符串中的一连一段字符序列

  思绪



  • 遍历 words,取出每个字符串
  • 判定当前这个字符串是否是 s 的前缀(s 是否是以这个字符串开头的)==>startwith
  1. def countPrefixes(words: list, s: str):  
  2.     count = 0  
  3.     for word in words:  
  4.         if s.startswith(word):  
  5.             count += 1  
  6.     return count
复制代码
  关于字符串的更多操作, 参考官方文档
https://docs.python.org/3/library/stdtypes.html#str
  文件查找工具



  • 搜索的关键就是对目录结构进行遍历

    • 递归查找,遇到子目录,就进到目录内里进行查找

  1. import os  
  2.   
  3. inputPath = input('请输入待搜索路径: ')  
  4. pattern = input('请输入待搜索关键词: ')  
  5.   
  6. for dirpath, dirnames, filenames in os.walk(inputPath):  
  7.     for f in filenames:  
  8.         if pattern in f:  
  9.             print(f'{dirpath}/{f}')
复制代码


  • os.walk 是一个遍历操作体系目录非常好用的一个办法

    • 只需要使用简单的循环就能完成递归遍历目录的操作,不必手写递归代码
    • os 传入的参数就是要从哪个目录开始进行遍历

  • dirpath 表示遍历到当前位置,对应的路径是什么
  • dirnames 表示当前目录下都有哪些目录,是一个列表,可以包含多个目录
  • dirnames 表示当前目录下都有哪些文件名,是一个列表,可以包含多个文件名
  • os.walk 每次调用,都能主动的去针对子目录进行递归的操作,只需要使用上述循环,就可以把所有的路径都获取出来

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

笑看天下无敌手

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表