星期二, 9月 27, 2022

好用的新Python函式庫

從 It’s Time to Say Goodbye to These Obsolete Python Libraries 看到的幾個好用的新函式庫跟新功能,雖說用新的怕舊的 Python 不能用,但這些新的函式庫或新功能其實也出蠻長一段時間了,現在大部分的 Linux 發行版也都有跟到。

摘錄如下

Pathlib

處理路徑的函式庫,直接看看這幾種用法,就能體會,比起之前的 os.path 直覺太多。

from pathlib import Path

readme = Path("README.md").resolve()

print(f"Absolute path: {readme.absolute()}")
# Absolute path: /home/martin/some/path/README.md
print(f"File name: {readme.name}")
# File name: README.md
print(f"Path root: {readme.root}")
# Path root: /
print(f"Parent directory: {readme.parent}")
# Parent directory: /home/martin/some/path
print(f"File extension: {readme.suffix}")
# File extension: .md
print(f"Is it absolute: {readme.is_absolute()}")

etc = Path('/etc')

joined = etc / "cron.d" / "anacron"
print(f"Exists? - {joined.exists()}")

Secrets

處理密碼的函式庫,簡單很多,而且語意很清楚。

import secrets

value = secrets.token_bytes(length)
value = secrets.token_hex(length)

dataclass

若之前有使用過 named tuple 的話,會覺得這個函式庫很好用,而且語意更清楚。

from dataclasses import dataclass

@dataclass()
class User:
    name: str
    surname: str

u = User("John", "Doe")

f-string

Python 從最早期的 “%s” % (name, ) 再到 “{}”.format(name) ,再到 f-string,f-string 讓格式化字串更為清楚,也不容易搞錯。

name = "John"
print(f"Hello {name}!")

結論

定期升級語法,可以帶來效能提升,也可以讓程式更具可讀性,是蠻值得安排時間去逐步更新的。

同場加映:Python 3.11–5個新功能 – anfinance – Medium

沒有留言: