Python 指令列選項徹底解析!argparse、Click、Typer 的差異與用法【新手向】

1. 前言

Python 是一種靈活且強大的程式語言,廣泛被開發者使用。其中,透過使用 指令列選項,可以大幅提升腳本與應用程式的操作性。

本篇文章將徹底解析如何在 Python 中處理指令列選項。具體來說,我們會介紹標準函式庫中的 argparse,以及外部函式庫 ClickTyper,並說明它們的差異與適用情境。

2. Pythonでコマンドライン引数を使う理由

Python スクリプトを開発していると、実行時に動作を変えたい場面がよくあります。例えば以下のようなケースです:

  • 処理対象のファイル名を指定したい
  • 出力形式を変更したい(例:JSON形式、CSV形式)
  • デバッグモードをオンにしたい

こういった場面で役立つのがコマンドライン引数です。スクリプトの起動時に引数を渡すことで、柔軟な動作制御が可能になります。

例:

python myscript.py --input data.csv --output result.json --debug

このように、コマンドライン引数を活用すれば、ユーザーの操作性を高め、再利用性の高いスクリプトを作成できます。

年収訴求

3. argparse:標準ライブラリで完結したい人向け

argparse 是 Python 標準函式庫中用來處理指令列引數的模組。無需額外安裝,開箱即用,適合希望盡量不依賴外部套件的開發者。

主な特徴:

  • Python 標準搭載,無需額外安裝
  • 能自動產生 --help 說明
  • 支援位置引數與選項引數

簡單的使用範例:

import argparse

parser = argparse.ArgumentParser(description='範例程式')
parser.add_argument('--name', help='使用者名稱')
parser.add_argument('--age', type=int, help='年齡')
args = parser.parse_args()

print(f"Hello, {args.name}. 你今年 {args.age} 歲。")

適用場景: 想在不依賴任何外部函式庫的情況下,建立基本的 CLI 工具時。

4. Click:シンプルで使いやすい外部ライブラリ

Click 是一個流行的外部套件,讓你能以更簡潔、直觀的方式撰寫 CLI 工具。相較於 argparse,它更注重開發者體驗。

主要特點:

  • 語法簡潔,容易閱讀與維護
  • 支援巢狀命令(subcommands)
  • 自動產生 --help 說明與驗證輸入

簡單的使用範例:

import click

@click.command()
@click.option('--name', prompt='你的名字是?', help='使用者名稱')
@click.option('--age', type=int, help='年齡')
def greet(name, age):
    click.echo(f"Hello, {name}. 你今年 {age} 歲。")

if __name__ == '__main__':
    greet()

適用場景: 想快速開發功能完善、具互動性的 CLI 工具時。

侍エンジニア塾

6. argparse・Click・Typer の比較まとめ

ここでは、3 種類のライブラリを比較表で整理します。用途や好みに応じて最適なものを選びましょう。

ライブラリ特徴おすすめの人
argparse標準ライブラリ。追加インストール不要外部套件を使いたくない人
Clickシンプルで高機能。直感的な記法手軽に CLI を作りたい人
Typer型ヒント対応。モダンな CLI 開発向き中〜大規模 CLI を型安全に作りたい人

いずれも高機能なライブラリなので、プロジェクトの規模や開発スタイルに応じて使い分けるのがベストです。

7. まとめ

本篇文章介紹了 Python 中三種常用的指令列引數處理工具:argparseClickTyper。它們各自擁有不同的特性與適用情境:

  • argparse:標準函式庫,適合不想安裝額外套件的使用者
  • Click:語法簡潔,適合快速開發 CLI 工具
  • Typer:支援型別註解,適合開發中大型、現代化的 CLI 專案

根據你的開發風格與專案需求,選擇最適合的工具可以大幅提升開發效率與程式碼可讀性。

希望這篇文章能幫助你建立更強大、更易用的 Python CLI 工具!

RUNTEQ(ランテック)|超実戦型エンジニア育成スクール