Python 中有哪些常用的 API?
1.Web 開發(fā)
Flask:輕量級 Web 框架,易于上手,適合構(gòu)建小型到中型的應(yīng)用程序。
Django:功能齊全的全棧 Web 框架,內(nèi)置 ORM、認(rèn)證系統(tǒng)等,適用于快速開發(fā)復(fù)雜網(wǎng)站。
FastAPI:現(xiàn)代、快速(高性能)的 Web 框架,基于 Python 類型提示,支持異步編程。
示例(Flask):
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run()
2. 網(wǎng)絡(luò)請求與 HTTP 客戶端
Requests:人類友好的 HTTP 庫,簡化了發(fā)送 HTTP 請求的過程。
HTTPX:一個(gè)基于 async/await 的 HTTP 客戶端,兼容 Requests 接口,支持同步和異步操作。
示例(Requests):
import requests
response = requests.get('https://api.github.com')
print(response.status_code)
print(response.json())
3. 數(shù)據(jù)庫交互
SQLAlchemy:強(qiáng)大的 SQL 工具包和對象關(guān)系映射器(ORM),支持多種數(shù)據(jù)庫后端。
Peewee:輕量級 ORM,簡單易用,適合小型項(xiàng)目。
Django ORM:如果使用 Django 框架,其內(nèi)置的 ORM 提供了非常方便的數(shù)據(jù)庫訪問方式。
示例(SQLAlchemy):
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
engine = create_engine('sqlite:///:memory:')
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
new_user = User(name='Alice')
session.add(new_user)
session.commit()
users = session.query(User).all()
for user in users:
print(user.name)
4. 數(shù)據(jù)處理與分析
Pandas:提供高性能的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析工具,廣泛應(yīng)用于金融、統(tǒng)計(jì)等領(lǐng)域。
NumPy:用于科學(xué)計(jì)算的基礎(chǔ)庫,特別擅長處理大型多維數(shù)組和矩陣運(yùn)算。
SciPy:基于 NumPy 構(gòu)建,提供了更多的數(shù)學(xué)函數(shù)和算法。
示例(Pandas):
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': ['a', 'b', 'c']
})
print(df)
5. 機(jī)器學(xué)習(xí)與深度學(xué)習(xí)
Scikit-learn:專注于傳統(tǒng)機(jī)器學(xué)習(xí)算法的庫,提供了數(shù)據(jù)預(yù)處理、模型選擇等功能。
TensorFlow 和 PyTorch:兩個(gè)最流行的深度學(xué)習(xí)框架,支持 GPU 加速訓(xùn)練。
示例(Scikit-learn):
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2)
clf = KNeighborsClassifier()
clf.fit(X_train, y_train)
print(clf.score(X_test, y_test))
6. 圖像處理
Pillow (PIL Fork):Python Imaging Library 的一個(gè)分支,提供了廣泛的圖像處理功能。
OpenCV:開源計(jì)算機(jī)視覺庫,包含了大量的圖像處理和機(jī)器視覺算法。
示例(Pillow):
from PIL import Image
img = Image.open('example.jpg')
gray_img = img.convert('L') # 轉(zhuǎn)換為灰度圖像
gray_img.show()
7. 自然語言處理
NLTK:經(jīng)典的 NLP 庫,涵蓋了分詞、詞性標(biāo)注、句法解析等多個(gè)方面。
spaCy:更現(xiàn)代化的 NLP 庫,注重速度和效率,特別適合生產(chǎn)環(huán)境中的應(yīng)用。
示例(spaCy):
import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp("Apple is looking at buying U.K. startup for $1 billion")
for ent in doc.ents:
print(ent.text, ent.label_)
8. 命令行接口
Click:用于創(chuàng)建漂亮且易于使用的命令行界面(CLI)的應(yīng)用程序。
Argparse:Python 標(biāo)準(zhǔn)庫中的模塊,用于解析命令行參數(shù)。
示例(Click):
import click
@click.command()
@click.option('--count', default=1, help='Number of greetings.')
@click.argument('name')
def hello(count, name):
for _ in range(count):
click.echo(f"Hello {name}!")
if __name__ == '__main__':
hello()
9. 并發(fā)與并行
Threading 和 Multiprocessing:分別用于實(shí)現(xiàn)多線程和多進(jìn)程編程。
Asyncio:用于編寫異步 I/O 程序,特別是網(wǎng)絡(luò)服務(wù)端應(yīng)用程序。
示例(Asyncio):
import asyncio
async def main():
print('Hello')
await asyncio.sleep(1)
print('World')
asyncio.run(main())
10. 測試
unittest:Python 內(nèi)置的單元測試框架。
pytest:一個(gè)擴(kuò)展性強(qiáng)的測試框架,簡化了測試編寫和執(zhí)行過程。
示例(pytest):
# test_example.py
def add(a, b):
return a + b
def test_add():
assert add(1, 2) == 3
11. 日志記錄
logging:Python 內(nèi)置的日志記錄模塊,提供了靈活的日志配置選項(xiàng)。
示例(logging):
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
logger.info('This is an info message')