[解決済み] 引数のアンパッキング:名前付き引数のみが*式の後に続くことができます。
2022-02-11 02:50:16
質問
以下はPythonで見事に動作します。
def f(x,y,z): return [x,y,z]
a=[1,2]
f(3,*a)
の要素は
a
のように呼び出した場合と同じように解凍されます。
f(3,1,2)
を返します。
[3,1,2]
. すばらしい
の要素を展開することができません。
a
を
最初
の2つの引数を指定します。
f(*a,3)
のように呼び出すのではなく
f(1,2,3)
SyntaxError: only named arguments may follow *expression" と表示されます。
なぜそのようにしなければならないのか、また、一時変数に頼ることなく、引数リストの任意の部分に配列を展開するための、私の知らない巧妙なトリックがあるのではないかと思っているのです。
解決方法は?
Raymond Hettingerの回答が指摘しているように、この
を変更することができます。
はPython 3で変更され
関連する提案はこちら
ということです。
特に今回の質問に関連して、その提案に対する変更の可能性の一つとして議論されたのがこちらです。
Exprlistの最後の項目として、星印のついた式だけを許可する。そうすれば アンパッキングコードを少し修正し、スター付き式にイテレータを割り当てることができるようにしました。この の動作は、意外性がありすぎるという理由で却下されました。
というわけで、関数の引数のアンパッキングの制限には実装上の理由があるのですが、確かにちょっと意外ですね。
とりあえず、私が探していた回避策を紹介します。今思えば当たり前ですが。
f(*(a+[3]))
関連
-
Pythonの非常に便利な2つのデコレーターを解説
-
PythonによるLeNetネットワークモデルの学習と予測
-
opencvとpillowを用いた顔認証システム(デモあり)
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。
-
[解決済み】csv.Error:イテレータはバイトではなく文字列を返すべき
-
[解決済み] 名前付きタプルおよびオプションのキーワード引数のデフォルト値
-
[解決済み】名前付き正規表現グループ "(?P<group_name>regexp)": "P" とは何の略ですか?
-
[解決済み] なぜ非デフォルトの引数はデフォルトの引数に従えないのか?
最新
-
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によるLeNetネットワークモデルの学習と予測
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
python call matlab メソッドの詳細
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
Python カメの描画コマンドとその例
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み】DataFrameのコンストラクタが正しく呼び出されない!エラー
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み】SyntaxError: デフォルト以外の引数がデフォルトの引数に続く