乱人伦 国语对白海角社区,五月激情丁香婷婷综合中文字幕,欧美伊人婷婷久久五月综合,亚洲精品无amm毛片,亚洲男人第一无码AV网站,国产日韩欧美丝袜一区二区,亚洲一区精品在线观看

FastAPI的小兄弟,开发命令行工具更给力-U发体育登陆网址

FastAPI的小兄弟,开发命令行工具更给力

2026-01-16 17:11:11投稿人:緬甸歐亞國(guó)際官網(wǎng)(陜西)有限公司圍觀26863 評(píng)論

FastAPI的小兄弟,開發(fā)命令行工具更給力FastAPI的小兄弟
,開發(fā)命令行工具更給力

FastAPI的開發(fā)組織叫做tiangolo,他家除了FastAPI外,還有另一個(gè)項(xiàng)目也非常好用 ,叫做typer。

三年前,我寫過一篇文章一日一技 :快速實(shí)現(xiàn)Python 命令行參數(shù)介紹另一個(gè)命令行工具fire. 而typer做得比fire還要好。

首先使用pip來安裝它 :

python3 -m pip install typer

函數(shù)參數(shù)等于命令行參數(shù)

我們首先來看看typer怎么使用 。創(chuàng)建一個(gè)example_1.py文件,寫入如下代碼 。

import typer


def main(name: str, salary: int):
print(f'{ name}月薪{ salary}元')


if __name__ == '__main__':
typer.run(main)

直接運(yùn)行 ,Python會(huì)報(bào)錯(cuò) :

FastAPI的小兄弟,開發(fā)命令行工具更給力

使用參數(shù)--help可以查看這個(gè)腳本的命令行參數(shù):

FastAPI的小兄弟,開發(fā)命令行工具更給力

于是我們根據(jù)這里的提示 ,輸入正確的參數(shù),從而正常運(yùn)行程序:

FastAPI的小兄弟,開發(fā)命令行工具更給力

子命令與自動(dòng)補(bǔ)全更好用

假設(shè)我們有一個(gè)神經(jīng)網(wǎng)絡(luò)的程序 ,其中的入口函數(shù)代碼如下 :

def train_data(train_folder: str, test_folder: str, rate: float = 0.8):
"""
訓(xùn)練人臉檢測(cè)模型
"""
print(f'使用文件夾{ train_folder}中的數(shù)據(jù)進(jìn)行訓(xùn)練')
print(f'使用{ test_folder}中的數(shù)據(jù)用來驗(yàn)證訓(xùn)練效果,確保準(zhǔn)確率>{ rate}')
return True

def predict(folder: str):
"""
使用訓(xùn)練好的模型預(yù)測(cè)
"""
print(f'對(duì)文件夾{ folder}中的數(shù)據(jù)進(jìn)行預(yù)測(cè) 。')

顯然 ,這個(gè)程序可以用來訓(xùn)練數(shù)據(jù) ,也可以用來預(yù)測(cè)數(shù)據(jù),所以有兩種不同的命令  ,每一種命令有不同的參數(shù) 。

這種情況下,使用typer非常方便,只需要加兩個(gè)裝飾器就可以了:

FastAPI的小兄弟
,開發(fā)命令行工具更給力

運(yùn)行效果如下圖所示 :

FastAPI的小兄弟,開發(fā)命令行工具更給力

輸入具體的子命令,還可以查看每個(gè)子命令的參數(shù):

FastAPI的小兄弟,開發(fā)命令行工具更給力

因此 ,我可以使用兩個(gè)不同的子命令來運(yùn)行程序:

FastAPI的小兄弟,開發(fā)命令行工具更給力

你以為這樣就完了 ?我們?cè)侔惭b它的一個(gè)輔助工具typer-cli ,還可以做更多事情:

python3 -m pip install typer-cli
typer --install-completion

有了這個(gè)東西,我們運(yùn)行程序可以這樣寫:

typer example_2.py run 子命令 參數(shù)1 參數(shù)2 --可選參數(shù)1 可選參數(shù)1的值

例如:

FastAPI的小兄弟
,開發(fā)命令行工具更給力

并且 ,typer可以幫我們可以實(shí)現(xiàn)自動(dòng)補(bǔ)全:

輸入typer example_2.py run然后按下Tab鍵,自動(dòng)告訴你可以輸入哪些子命令 ,如下圖所示:

FastAPI的小兄弟,開發(fā)命令行工具更給力

除此之外 ,如果你的命令行程序只有一個(gè)命令 ,那么你甚至只需要寫一個(gè)函數(shù)  ,連typer都不需要導(dǎo)入 ,就可以使用typer來運(yùn)行:

FastAPI的小兄弟	,開發(fā)命令行工具更給力

自動(dòng)生成文檔也簡(jiǎn)單

我們知道 ,F(xiàn)astAPI自動(dòng)生成接口文檔的功能非常好用。typer作為它的兄弟,也繼承了這個(gè)高級(jí)功能 。我們來看看 :

import typer

app = typer.Typer(help="人臉檢測(cè)模型")


@app.command
def train_data(train_folder: str, test_folder: str, rate: float = 0.8):
"""
訓(xùn)練人臉檢測(cè)模型
"""
print(f'使用文件夾{ train_folder}中的數(shù)據(jù)進(jìn)行訓(xùn)練')
print(f'使用{ test_folder}中的數(shù)據(jù)用來驗(yàn)證訓(xùn)練效果,確保準(zhǔn)確率>{ rate}')
return True

@app.command
def predict(folder: str):
"""
使用訓(xùn)練好的模型預(yù)測(cè)
"""
print(f'對(duì)文件夾{ folder}中的數(shù)據(jù)進(jìn)行預(yù)測(cè)。')

運(yùn)行命令 :

typer main.py utils docs --name "python3 main.py" --output readme.md

自動(dòng)在當(dāng)前文件夾生成一個(gè)readme.md文件 。我們使用任何能夠渲染Markdown的軟件打開這個(gè)文檔  ,可以看到文檔內(nèi)容如下 :

FastAPI的小兄弟	,開發(fā)命令行工具更給力

這樣一來,我們不需要額外花心思去維護(hù)文檔,只需要在修改完代碼、增刪新的命令或者參數(shù)以后 ,運(yùn)行這個(gè)命令 ,就可以把文檔自動(dòng)更新 。

展開閱讀全文

投稿時(shí)間:2022-05-22  最后更新:2022-09-03