0Pricing
Python Academy · レッスン

デフォルト引数とキーワード引数

デフォルトのパラメーター値とキーワード引数の呼び出し構文を使います。

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

概要

デフォルト引数値とキーワードによる呼び出し構文により、Pythonの関数は柔軟で自己説明的になります。

デフォルト引数値

def greet(name, greeting='Hello'): はgreetingにデフォルト値を設定します。呼び出し元はこの引数を省略できます。
def greet(name, greeting='Hello'):
    print(f'{greeting}, {name}!')
greet('Alice')
greet('Bob', 'Hi')

キーワード引数

名前を指定して呼び出します:greet(name='Alice', greeting='Hi')。キーワード引数を使う場合、順序は関係ありません。
def describe(name, age, city):
    print(f'{name}, {age}, {city}')
describe(age=30, city='NYC', name='Alice')

位置引数とキーワード引数の組み合わせ

呼び出し時は、位置引数をキーワード引数より前に指定する必要があります。describe('Alice', city='NYC', age=30)は有効です。
def f(a, b, c='default'):
    print(a, b, c)
f(1, c='X', b=2)

ミュータブルなデフォルト引数の罠

ミュータブルなデフォルト値は絶対に使わないでください:def f(lst=[]) は、すべての呼び出しで同じリストを共有します。代わりにdef f(lst=None): lst = lst or []を使用してください。
def append(x, lst=None):
    if lst is None:
        lst = []
    lst.append(x)
    return lst
print(append(1))
print(append(2))

キーワード専用引数

*の後にあるパラメーターはキーワードで指定する必要があります:def f(a, *, b): ではbを位置引数にできません。コードの意図を明確にできます。
def f(a, *, b):
    return a + b
print(f(1, b=2))

位置専用引数(3.8以降)

/より前のパラメーターは位置引数で指定する必要があります:def f(a, b, /, c): ではaとbをキーワードで指定できません。
def f(a, b, /, c=0):
    return a + b + c
print(f(1, 2, c=3))

**kwargs

def f(**kwargs) は、追加のキーワード引数をdictにまとめてkwargsに格納します。オプションの転送に便利です。
def show(**kwargs):
    for k, v in kwargs.items():
        print(f'{k}={v}')
show(name='Alice', age=30)

*argsと**kwargsの組み合わせ

def f(*args, **kwargs) は、位置引数とキーワード引数を任意の組み合わせで受け取ります。
def debug(*args, **kwargs):
    print('args:', args)
    print('kwargs:', kwargs)
debug(1,2,x=3)

呼び出し時のアンパック

f(*[1,2,3]) はリストを位置引数として展開します。f(**{'a':1}) はdictをキーワード引数として展開します。
def add(a, b, c): return a+b+c
d = {'a':1,'b':2,'c':3}
print(add(**d))

部分適用

from functools import partial; double = partial(pow, exp=2) は、一部の引数をあらかじめ固定します。
from functools import partial
def power(base, exp): return base ** exp
square = partial(power, exp=2)
print(square(5))

理解度チェック

def f(lst=[]) のようなミュータブルなデフォルト引数を使うと、どのような問題が起こりますか?

まとめ

デフォルト引数はdef f(x=val)の形で指定します。キーワードによる呼び出しはf(x=val)の形です。ミュータブルなデフォルト引数は避けてください。*でキーワード専用、/で位置専用、**kwargsで追加の引数をまとめて受け取れます。

次へ進む

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

よくある質問

「デフォルト引数とキーワード引数」レッスンは無料ですか?

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

「デフォルト引数とキーワード引数」で何を学びますか?

デフォルトのパラメーター値とキーワード引数の呼び出し構文を使います。 ブラウザで直接実行するハンズオンコードでPython Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「デフォルト引数とキーワード引数」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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