0Pricing
Python Academy · レッスン

args と kwargs

可変長の位置引数とキーワード引数を受け取ります。

「args と kwargs」はCoddyKit上の無料Python Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPython Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Python Academyコースには全4レッスンが含まれています。

概要

*argsと**kwargsを使うと、関数で可変個数の位置引数とキーワード引数を受け取れます。

*argsとは

def f(*args) は、追加されたすべての位置引数をargsという名前のタプルにまとめます。
def f(*args):
    print(args)
f(1, 2, 3)  # (1, 2, 3)

*argsの反復処理

argsはタプルなので、for x in args: ... のように処理できます。sum(args)やmax(args)なども使用できます。
def total(*args):
    return sum(args)
print(total(1, 2, 3, 4, 5))

**kwargsとは

def f(**kwargs) は、追加されたすべてのキーワード引数をkwargsという名前のdictにまとめます。
def f(**kwargs):
    print(kwargs)
f(name='Alice', age=30)

**kwargsの使用

通常のdictと同じようにkwargsにアクセスできます:for key, val in kwargs.items():
def display(**kwargs):
    for k, v in kwargs.items():
        print(f'{k}: {v}')
display(x=1, y=2)

通常の引数、*args、**kwargsの組み合わせ

def f(a, b, *args, **kwargs): では、通常のパラメーター、*args、キーワード専用引数、**kwargsの順に指定します。
def f(a, *args, **kwargs):
    print(a, args, kwargs)
f(1, 2, 3, x=4)

引数の転送

def wrapper(*args, **kwargs): return real_func(*args, **kwargs) は、すべての引数をラップされた関数にそのまま転送します。
def real(a, b, c=0): return a+b+c
def wrapper(*args, **kwargs): return real(*args, **kwargs)
print(wrapper(1, 2, c=3))

呼び出し時の*によるアンパック

*iterableは、任意のイテラブルを位置引数としてアンパックします。**mappingはdictをキーワード引数としてアンパックします。
def add(a, b, c): return a+b+c
args = [1, 2, 3]
print(add(*args))

イテラブルの拡張アンパック

first, *rest = [1,2,3,4] ではfirst=1、rest=[2,3,4]になります。*head, last = lst ではlastに最後の要素が入ります。
first, *rest = [1, 2, 3, 4]
print(first, rest)
*head, last = [1, 2, 3]
print(head, last)

*args/**kwargsの型ヒント

def f(*args: int, **kwargs: str) は、コンテナーではなく各要素の型を注釈します。
def f(*args: int, **kwargs: str) -> None:
    print(args, kwargs)
f(1, 2, name='Alice')

一般的なパターン

print()自体が*argsを使用します。print(*my_list)とすると、各要素をスペースで区切って出力します。これはPythonらしい書き方です。
lst = [1, 2, 3]
print(*lst)  # 1 2 3

理解度チェック

関数内で*argsはどの型になりますか?

まとめ

*argsは追加の位置引数を格納したタプルです。**kwargsは追加のキーワード引数を格納したdictです。柔軟なAPIや引数の転送に使用します。

次へ進む

よくできました。次のレッスンに進み、学習をさらに進めましょう。

よくある質問

「args と kwargs」レッスンは無料ですか?

はい。「args と kwargs」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Python Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Python Academyコースには全4レッスンが含まれています。

「args と kwargs」で何を学びますか?

可変長の位置引数とキーワード引数を受け取ります。 ブラウザで直接実行するハンズオンコードでPython Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Python Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのPython Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「args と kwargs」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このPython Academyレッスンでコードを書いて実行できますか?

はい。すべてのPython Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 関数の定義と呼び出し
  2. デフォルト引数とキーワード引数
  3. args と kwargs
  4. 戻り値とスコープ
← Python Academyに戻る