Python Args と Kwargs
Python args and kwargs Made Easy
*args と **kwargs は恐ろしく見えるかもしれませんが、実際には理解するのはそれほど難しくなく、関数に多くの柔軟性を与える力を持っています。
より深く理解するには、記事 Python *args と **kwargs を簡単に理解する をお読みください。
Args と Kwargs
*args と **kwargs を使用すると、関数を呼び出す際に、未定義の数の引数とキーワード引数を渡すことができます。
# 任意の数の位置引数とキーワード引数を受け入れる関数を定義
def some_function(*args, **kwargs):
pass
# 任意の数の位置引数で呼び出す
some_function(arg1, arg2, arg3)
# 任意の数のキーワード引数で呼び出す
some_function(key1=arg1, key2=arg2, key3=arg3)
# 位置引数とキーワード引数の両方で呼び出す
some_function(arg, key1=arg1)
# または、引数なしで呼び出す
some_function()
Python の慣習
*args と **kwargs という単語は慣習です。インタープリタによって強制されるものではありませんが、Python コミュニティでは良い習慣と見なされています。
args
引数は args 変数を通じてアクセスできます。
# *args は位置引数をタプルに収集します
def some_function(*args):
print(f'Arguments passed: {args} as {type(args)}')
# 複数の引数を渡す - それらは args タプルに収集されます
some_function('arg1', 'arg2', 'arg3')
Arguments passed: ('arg1', 'arg2', 'arg3') as <class 'tuple'>
クイズ
ログインしてこのクイズに回答し、学習の進捗を追跡できます
*args は引数をどのデータ型に収集しますか?A. リスト
B. タプル
C. 辞書
D. セット
kwargs
キーワードは kwargs 変数を通じてアクセスできます。
# **kwargs はキーワード引数を辞書に収集します
def some_function(**kwargs):
print(f'keywords: {kwargs} as {type(kwargs)}')
# キーワード引数を渡す - それらは kwargs 辞書に収集されます
some_function(key1='arg1', key2='arg2')
keywords: {'key1': 'arg1', 'key2': 'arg2'} as <class 'dict'>
クイズ
ログインしてこのクイズに回答し、学習の進捗を追跡できます
**kwargs は引数をどのデータ型に収集しますか?A. リスト
B. タプル
C. 辞書
D. セット