[解決済み] argsと**kwargsの使い分け [重複]。
質問
という概念に難があるんです。
*args
と
**kwargs
.
ここまでで、私は学びました。
-
*args
= 引数のリスト - 位置引数として -
**kwargs
= 辞書 - そのキーは個別のキーワード引数になり、値はこれらの引数の値になります。
どのようなプログラミング作業に役立つのか理解できません。
そうかもしれませんね。
リストや辞書を関数の引数として入力し、同時にワイルドカードとして入力することで、どんな引数でも渡すことができると思うのですが?
を説明する簡単な例はありますか?
*args
と
**kwargs
が使われているのですか?
また、私が見つけたチュートリアルでは、"*"と変数名だけを使っていました。
Are
*args
と
**kwargs
は単なるプレースホルダーなのか、それとも正確に
*args
と
**kwargs
をコードに追加してください。
どのように解決するのですか?
この構文は
*
と
**
. 名前
*args
と
**kwargs
は、あくまでも慣習であり、必ず使用しなければならないものではありません。
あなたは
*args
は、関数に渡されるかもしれない引数の数がわからないとき、つまり、関数に任意の数の引数を渡すことができるようにします。 例えば
>>> def print_everything(*args):
for count, thing in enumerate(args):
... print( '{0}. {1}'.format(count, thing))
...
>>> print_everything('apple', 'banana', 'cabbage')
0. apple
1. banana
2. cabbage
同様に
**kwargs
を使えば、あらかじめ定義していない名前付き引数を扱うことができます。
>>> def table_things(**kwargs):
... for name, value in kwargs.items():
... print( '{0} = {1}'.format(name, value))
...
>>> table_things(apple = 'fruit', cabbage = 'vegetable')
cabbage = vegetable
apple = fruit
これらは名前付き引数と一緒に使うこともできます。 明示的な引数はまず値を取得し、それ以外のものはすべて
*args
と
**kwargs
. 名前付き引数はリストの中で最初に来ます。 例えば
def table_things(titlestring, **kwargs)
また、同じ関数定義の中で両方を使用することもできますが
*args
の前に存在する必要があります。
**kwargs
.
を使用することもできます。
*
と
**
の構文は、関数を呼び出すときに使用します。 例えば
>>> def print_three_things(a, b, c):
... print( 'a = {0}, b = {1}, c = {2}'.format(a,b,c))
...
>>> mylist = ['aardvark', 'baboon', 'cat']
>>> print_three_things(*mylist)
a = aardvark, b = baboon, c = cat
この例でわかるように、項目のリスト (またはタプル) を受け取り、それを解凍しています。これによって、関数の引数にマッチさせることができます。 もちろん
*
関数定義の中と関数呼び出しの中の両方です。
関連
-
Python Pillow Image.save jpg画像圧縮問題
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み] 'int'オブジェクトに'__getitem__'属性がない。
-
[解決済み] 関数デコレータを作成し、それらを連鎖させるには?
-
[解決済み] staticmethodとclassmethodの違いについて
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み] Pythonで**kwargsを使用する正しい方法
-
[解決済み】__str__と__repr__の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
任意波形を生成してtxtで保存するためのPython実装
-
Python 入出力と高次代入の基礎知識
-
[解決済み】ImportError: sklearn.cross_validation という名前のモジュールがない。
-
[解決済み] _tkinter.TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み】 AttributeError: モジュール 'matplotlib' には属性 'plot' がない。
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] Pythonでリストを関数の引数に展開する方法 [重複]について