几个被淘汰的Python库,不要再用了!
1. Pathlib vs. OS 模块
from pathlib import Pathimport os.path# 老方式two_dirs_up = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))# 新方式,可读性强two_dirs_up = Path(__file__).resolve().parent.parent
readme = Path("README.md").resolve()print(f"Absolute path: {readme.absolute()}") # 绝对路径print(f"File name: {readme.name}") # 文件名print(f"Path root: {readme.root}") # 根路径print(f"Parent directory: {readme.parent}") # 父目录print(f"File extension: {readme.suffix}") # 文件后缀print(f"Is it absolute: {readme.is_absolute()}") # 是否为绝对路径
etc = Path('/etc')joined = etc / "cron.d" / "anacron"print(f"Exists? - {joined.exists()}") # 查看路径是否存在
2. Secrets vs. OS 模块
import secretslength = 64value = secrets.token_bytes(length)print(f"Bytes: {value}")value = secrets.token_hex(length)print(f"Hex: {value}")
3. Zoneinfo vs. pytz
from datetime import datetimefrom 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包来补充。
4. Dataclasses vs. Namedtuple
from dataclasses import dataclass@dataclassclass User:name: strsurname: strpassword: bytesu = User("John", "Doe", b'secret')print(u)
5. 正确的日志记录 vs. print
import logginglogging.basicConfig(filename='application.log',level=logging.WARNING,format='[%(asctime)s] {%(pathname)s:%(lineno)d} %(levelname)s - %(message)s',datefmt='%H:%M:%S')logging.error("Some serious error occurred.")logging.warning('Some warning.')
6. f-strings vs. format
name = "world"print(f"Hello, {name}!")
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"))
7. Tomllib vs. tomli
import tomllibwith open("pyproject.toml", "rb") as f:config = tomllib.load(f)print(config)
总结
目前,对编程、职场感兴趣的同学,大家可以联系我微信:golang404,拉你进入“程序员交流群”。
资料包含了《IDEA视频教程》、《最全python面试题库》、《最全项目实战源码及视频》及《毕业设计系统源码》,总量高达650GB。全部免费领取!全面满足各个阶段程序员的学习需求。