[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
2022-03-13 23:45:44
質問
以下のメソッド定義において
*
と
**
する
param2
?
def foo(param1, *param2):
def bar(param1, **param2):
解決方法は?
その
*args
と
**kwargs
の節で説明したように、関数に任意の数の引数を与えるための一般的なイディオムです。
関数の定義について
Pythonのドキュメントにあります。
は
*args
を実行すると、すべての関数パラメータが得られます。
タプルとして
:
def foo(*args):
for a in args:
print(a)
foo(1)
# 1
foo(1,2,3)
# 1
# 2
# 3
は
**kwargs
をすべてお渡しします。
キーワード引数
ただし、辞書としての正式なパラメータに対応するものを除く。
def bar(**kwargs):
for a in kwargs:
print(a, kwargs[a])
bar(name='one', age=27)
# name one
# age 27
どちらのイディオムも、通常の引数と混ぜることで、固定引数と一部の可変引数のセットを可能にします。
def foo(kind, *args, **kwargs):
pass
また、これを逆に利用することも可能です。
def foo(a, b, c):
print(a, b, c)
obj = {'b':10, 'c':'lee'}
foo(100,**obj)
# 100 10 lee
もう一つの使い方は
*l
イディオムは
引数リストを展開する
関数を呼び出すときに
def foo(bar, lee):
print(bar, lee)
l = [1,2]
foo(*l)
# 1 2
Python 3では、以下のように
*l
を代入の左側で使用します (
拡張版イテラブル・アンパッキング
) のように、この文脈ではタプルの代わりにリストを与えますが。
first, *rest = [1,2,3,4]
first, *l, last = [1,2,3,4]
また、Python 3では、新しいセマンティックが追加されました( PEP 3102 ):
def func(arg1, arg2, arg3, *, kwarg1, kwarg2):
pass
この関数は3つの位置引数しか受け付けません。
*
はキーワード引数としてのみ渡すことができる。
注意
-
A Python
dict
キーワード引数の受け渡しに意味的に使用される、任意の順序で並べられます。しかし、Python 3.6では、キーワード引数は挿入順序を覚えていることが保証されています。 -
の要素の順番は
**kwargs
は、キーワード引数が関数に渡された順番に対応するようになりました." -。 Python 3.6での新機能 - 実際、CPython 3.6 のすべての dicts は、実装の詳細として挿入順を記憶します。
関連
-
[解決済み】お使いのCPUは、このTensorFlowバイナリが使用するようにコンパイルされていない命令をサポートしています。AVX AVX2
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] 変数を参照渡しする方法を教えてください。
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】forループを使った辞書の反復処理
-
[解決済み】__str__と__repr__の違いは何ですか?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
Python Pillow Image.save jpg画像圧縮問題
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み] argsと**kwargsの使い分け [重複]。
-
[解決済み] **kwargsの目的と使い方を教えてください。[重複しています]。
-
[解決済み] Pythonでアスタリスク*は何を意味するのですか?[重複しています]。
-
[解決済み】*args と **kwargs の意味は何ですか?[重複しています]