你应该停止使用的 7 个已弃用的 Python 库

2024-08-22 02:04

本文主要是介绍你应该停止使用的 7 个已弃用的 Python 库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

      欢迎来到雲闪世界。升级您的 Python 工具包:发现 7 个应停止使用的过时库以及替代它们的功能。最近,我回顾了 Python 的新特性,发现每个版本都引入了创新,使我们的日常开发工作变得更加轻松。

这让我意识到科技是一门永无止境的艺术,总是充满惊喜。这也提醒我要不断更新我的“工具包”,以免被新技术的浪潮抛在后面。

让我们来谈谈 Python 中的一些过时的方法以及如何拥抱这些新功能。

Pathlib 与 OS 模块

还记得使用 os.path 作为文件路径时的那些长字符串吗?那是一场噩梦。

自 Python 3.4 以来,pathlib 模块彻底改变了文件路径操作。

它就像一个金矿,使代码更加优雅和可读。

from pathlib import Path
import os.path# Old way
two_dirs_up = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# New way, more readable
two_dirs_up = Path(__file__).resolve().parent.parent

使用新方法,路径将被视为对象,而不是字符串,从而允许通过对象属性直接操作。这是程序员的梦想。

例如,获取文件名,后缀,父目录等,可以简单地完成:

 
readme = Path("README.md").resolve()print(f"Absolute path: {readme.absolute()}")  # Absolute path
print(f"File name: {readme.name}")            # File name
print(f"Path root: {readme.root}")            # Root path
print(f"Parent directory: {readme.parent}")   # Parent directory
print(f"File extension: {readme.suffix}")     # File suffix
print(f"Is it absolute: {readme.is_absolute()}")  # Is it an absolute path?

我最喜欢的功能是使用“/”运算符来连接路径:

 
etc = Path('/etc')joined = etc / "cron.d" / "anacron"
print(f"Exists? - {joined.exists()}")  # Check if the path exists

路径操作变得像“切蛋糕”一样简单直观。旧的 os.path 模块现在已经远远落后于时代。

机密与 OS 模块

让我们来讨论一下 Python 3.6 中引入的 secrets 模块。

之前我们使用 os.urandom 来生成随机字节。然而,secret 更适合生成安全令牌,尤其是密码等敏感信息。

 
import secretslength = 64
value = secrets.token_bytes(length)
print(f"Bytes: {value}")value = secrets.token_hex(length)
print(f"Hex: {value}")

使用秘密的好处是它提供了许多生成随机数据的方法,并且是出于安全目的而设计的。

与随机模块不同,应使用秘密来生成密码以确保其安全。

Zoneinfo 与 pytz

在 Python 3.9 之前,我们依靠 pytz 库进行时区处理。

现在,Python 包含 zoneinfo 模块,简化了时区操作。

 
from datetime import datetime
from zoneinfo import ZoneInfonyc = ZoneInfo("America/New_York")
localized = datetime(2022, 6, 4, tzinfo=nyc)
print(f"Datetime: {localized}, Timezone: {localized.tzname()}, TZ Info: {localized.tzinfo}")

这对于处理时区来说是一个巨大的进步,但请记住,如果您的系统缺少时区数据,您仍然需要 tzdata 包。

数据类与命名元组

Python 3.7 引入了数据类,使得定义数据结构变得更加容易。

数据类可以替代命名元组,提供不可变对象、默认值和类型提示。

 
from dataclasses import dataclass@dataclass
class User:name: strsurname: strpassword: bytesu = User("John", "Doe", b'secret')
print(u)

这不仅简化了代码,还提高了可读性。除非您创建了数百万个实例,否则性能差异很小。

毕竟程序员最大的敌人是拖延症,而不是执行效率。

正确记录与打印

有时我们会使用打印语句进行调试,但在生产环境中,使用日志记录模块是更好的选择。

 
import logging
logging.basicConfig(filename='application.log',level=logging.WARNING,format='[%(asctime)s] {%(pathname)s:%(lineno)d} %(levelname)s - %(message)s',datefmt='%H:%M:%S'
)logging.error("A serious error occurred.")
logging.warning('This is a warning.')

日志记录有助于更好地记录信息,并允许设置日志级别、格式等,从而增强调试体验。

f 字符串与格式

我们多久使用一次 str.format() 来连接字符串?

自从 Python 3.6 引入 f 字符串以来,字符串连接变得非常简单。

 
name = "world"
print(f"Hello, {name}!")

但是,f 字符串并不总是最好的选择。对于动态模板,仍然需要 str.format()。

 
def func(tpl: str, param1: str, param2: str) -> str:return tpl.format(param1=param1, param2=param2)some_template = "First template: {param1}, {param2}"
another_template = "Other template: {param1} and {param2}"
print(func(some_template, "Hello", "World"))
print(func(another_template, "Hello", "Python"))

f 字符串非常适合静态字符串,因此请根据您的需要在它们之间进行选择。

Tomlib 与 tomli

最后,我们来谈谈如何处理 TOML 配置文件。Python 3.11 引入了 tomllib,无需安装 tomli 库。

 
import tomllibwith open("pyproject.toml", "rb") as f:config = tomllib.load(f)print(config)

少一个依赖意味着少一些麻烦,特别是在多版本环境中。内置库总是能提供稳定感。

感谢关注雲闪世界。(Aws解决方案架构师vs开发人员&GCP解决方案架构师vs开发人员)

这篇关于你应该停止使用的 7 个已弃用的 Python 库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1094929

相关文章

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

购买磨轮平衡机时应该注意什么问题和技巧

在购买磨轮平衡机时,您应该注意以下几个关键点: 平衡精度 平衡精度是衡量平衡机性能的核心指标,直接影响到不平衡量的检测与校准的准确性,从而决定磨轮的振动和噪声水平。高精度的平衡机能显著减少振动和噪声,提高磨削加工的精度。 转速范围 宽广的转速范围意味着平衡机能够处理更多种类的磨轮,适应不同的工作条件和规格要求。 振动监测能力 振动监测能力是评估平衡机性能的重要因素。通过传感器实时监

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

nudepy,一个有趣的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - nudepy。 Github地址:https://github.com/hhatto/nude.py 在图像处理和计算机视觉应用中,检测图像中的不适当内容(例如裸露图像)是一个重要的任务。nudepy 是一个基于 Python 的库,专门用于检测图像中的不适当内容。该

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

HTML提交表单给python

python 代码 from flask import Flask, request, render_template, redirect, url_forapp = Flask(__name__)@app.route('/')def form():# 渲染表单页面return render_template('./index.html')@app.route('/submit_form',

Python QT实现A-star寻路算法

目录 1、界面使用方法 2、注意事项 3、补充说明 用Qt5搭建一个图形化测试寻路算法的测试环境。 1、界面使用方法 设定起点: 鼠标左键双击,设定红色的起点。左键双击设定起点,用红色标记。 设定终点: 鼠标右键双击,设定蓝色的终点。右键双击设定终点,用蓝色标记。 设置障碍点: 鼠标左键或者右键按着不放,拖动可以设置黑色的障碍点。按住左键或右键并拖动,设置一系列黑色障碍点