Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
102 changes: 102 additions & 0 deletions docs/tutorial/arguments/default.ja.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
# デフォルト値付き CLI 引数

同じ `typer.Argument()` を使ってデフォルト値を設定することもできます。

そうすると、その *CLI 引数* は省略可能になるだけでなく、デフォルト値も持つようになります。

## デフォルト値を持つ省略可能な *CLI 引数*

`typer.Argument()` を使って、*CLI 引数* に `None` 以外のデフォルト値を持たせることもできます。

{* docs_src/arguments/default/tutorial001_an_py310.py hl[9] *}

/// tip

この場合、値は利用者が渡す `str` か、デフォルト値 `"Wade Wilson"` のどちらかで、どちらも `str` です。したがって、値が `None` になることはないので、`Optional[str]` を使う必要はありませんし、使うべきでもありません。

`Optional[something]` は、Python に「その値は `None` になり得る」と伝えるものです。ただし `Optional` を使っても、Typer に対して値が必須かどうかを伝えることにはなりません。

///

確認してみましょう。

<div class="termy">

```console
// help を確認します
$ python main.py --help

// [default: Wade Wilson] ✨ に注目してください
Usage: main.py [OPTIONS] [NAME]

Arguments:
[NAME] [default: Wade Wilson]

Options:
--help Show this message and exit.

// 省略可能な CLI 引数なし
$ python main.py

Hello Wade Wilson

// CLI 引数を 1 つ渡す
$ python main.py Camila

Hello Camila
```

</div>

## 動的なデフォルト値

`default_factory` 引数に関数を渡せば、デフォルト値を動的に生成することもできます。

{* docs_src/arguments/default/tutorial002_an_py310.py hl[9:10,14] *}

この場合は、毎回ランダムな `str` を返す `get_name` 関数を作成しています。

そして、それを `typer.Argument()` の最初の関数引数として渡しています。

/// tip

`default_factory` の "factory" という言葉は、単に「デフォルト値を作る関数」という意味です。

///

確認してみましょう。

<div class="termy">

```console
// help を確認します
$ python main.py --help

Usage: main.py [OPTIONS] [NAME]

Arguments:
[NAME] [default: (dynamic)]

Options:
--help Show this message and exit.

// 何度か試してみてください。毎回ランダムなデフォルト値が使われます
$ python main.py

Hello Deadpool

$ python main.py

Hello Hiro

$ python main.py

Hello Rick

// 今度は CLI 引数に値を渡します
$ python main.py Camila

Hello Camila
```

</div>
118 changes: 118 additions & 0 deletions docs/tutorial/arguments/envvar.ja.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
# 環境変数付き CLI 引数

*CLI 引数* がコマンドラインで渡されなかった場合に、環境変数から値を読むよう設定することもできます。

/// tip

環境変数について詳しくは、[Environment Variables](../../environment-variables.md){.internal-link target=_blank} を参照してください。

///

そのためには、`typer.Argument()` の `envvar` パラメータを使います。

{* docs_src/arguments/envvar/tutorial001_an_py310.py hl[9] *}

この場合、*CLI 引数* `name` のデフォルト値は `"World"` ですが、コマンドラインで値が渡されなければ、環境変数 `AWESOME_NAME` に設定された値も読み取ります。

<div class="termy">

```console
// help を確認
$ python main.py --help

Usage: main.py [OPTIONS] [NAME]

Arguments:
[NAME] [env var: AWESOME_NAME;default: World]

Options:
--help Show this message and exit.

// CLI 引数なしで実行
$ python main.py

Hello Mr. World

// 今度は CLI 引数を渡す
$ python main.py Czernobog

Hello Mr. Czernobog

// 次に環境変数を使う
$ AWESOME_NAME=Wednesday python main.py

Hello Mr. Wednesday

// CLI 引数は env var より優先される
$ AWESOME_NAME=Wednesday python main.py Czernobog

Hello Mr. Czernobog
```

</div>

## 複数の環境変数

環境変数は 1 つに限りません。コマンドラインで値が渡されなかったときに使える環境変数のリストを宣言できます。

{* docs_src/arguments/envvar/tutorial002_an_py310.py hl[10] *}

確認してみましょう。

<div class="termy">

```console
// help を確認
$ python main.py --help

Usage: main.py [OPTIONS] [NAME]

Arguments:
[NAME] [env var: AWESOME_NAME, GOD_NAME;default: World]

Options:
--help Show this message and exit.

// 1 つ目の env var を試す
$ AWESOME_NAME=Wednesday python main.py

Hello Mr. Wednesday

// 2 つ目の env var を試す
$ GOD_NAME=Anubis python main.py

Hello Mr. Anubis
```

</div>

## help テキストから env var を隠す

デフォルトでは、使用される環境変数は help テキストに表示されますが、`show_envvar=False` で無効にできます。

{* docs_src/arguments/envvar/tutorial003_an_py310.py hl[11] *}

確認してみましょう。

<div class="termy">

```console
// help を確認
$ python main.py --help

// env var は表示されない
Usage: main.py [OPTIONS] [NAME]

Arguments:
[NAME] [default: World]

Options:
--help Show this message and exit.

// それでも env var は使える
$ AWESOME_NAME=Wednesday python main.py

Hello Mr. Wednesday
```

</div>
Loading
Loading