[解決済み] 関数呼び出しにおけるstarとdoublestarの演算子の意味は?
2022-03-14 11:20:57
質問内容
とは何ですか?
*
演算子の意味は、Pythonでは次のようなコードになります。
zip(*x)
または
f(**k)
?
- インタープリター内部ではどのように処理されているのでしょうか?
- 性能に全く影響を与えませんか?速いですか、遅いですか?
- どのような場合に有効で、どのような場合に無効なのか?
- 関数の宣言と呼び出しのどちらで使用すべきですか?
どのように解決するのですか?
シングルスター
*
は、シーケンス/コレクションを位置引数に展開するので、こんなことができます。
def sum(a, b):
return a + b
values = (1, 2)
s = sum(*values)
これはタプルを解凍し、実際に次のように実行されるようにします。
s = sum(1, 2)
二重星
**
も同じように、辞書と名前付き引数を使うだけです。
values = { 'a': 1, 'b': 2 }
s = sum(**values)
組み合わせることもできます。
def sum(a, b, c, d):
return a + b + c + d
values1 = (1, 2)
values2 = { 'c': 10, 'd': 15 }
s = sum(*values1, **values2)
として実行されます。
s = sum(1, 2, c=10, d=15)
セクションも参照してください。 4.7.4 - 引数リストのアンパッキング Pythonのドキュメントの
さらに
*x
と
**y
これにより、関数が宣言で指定されていない任意の数の位置引数や名前付き引数を受け取ることができるようになります。
例
def sum(*values):
s = 0
for v in values:
s = s + v
return s
s = sum(1, 2, 3, 4, 5)
または
**
:
def get_a(**values):
return values['a']
s = get_a(a=1, b=2) # returns 1
を使用すると、オプションのパラメータを宣言することなく大量に指定することができます。
そしてまた、組み合わせることができる。
def sum(*values, **options):
s = 0
for i in values:
s = s + i
if "neg" in options:
if options["neg"]:
s = -s
return s
s = sum(1, 2, 3, 4, 5) # returns 15
s = sum(1, 2, 3, 4, 5, neg=True) # returns -15
s = sum(1, 2, 3, 4, 5, neg=False) # returns 15
関連
-
[解決済み】ImportError: bs4という名前のモジュールがない(BeautifulSoup)
-
[解決済み] 文字列リテラルの前にある'b'文字は何を意味するのでしょうか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] バイトを文字列に変換する
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] Pythonの@propertyデコレーターはどのように機能するのでしょうか?
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
-
[解決済み】__str__と__repr__の違いは何ですか?
-
[解決済み】Pythonに三項条件演算子はありますか?
最新
-
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を使って簡単なzipファイルの解凍パスワードを手作業で解く
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
Python入門 openを使ったファイルの読み書きの方法
-
Pythonショートビデオクローラーチュートリアル
-
PythonによるExcelファイルの一括操作の説明
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み】DataFrameのコンストラクタが正しく呼び出されない!エラー
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み】ValueError: pickleプロトコルがサポートされていません。3、python2 pickleはpython3 pickleでダンプしたファイルを読み込むことができない?