[解決済み] なぜ非デフォルトの引数はデフォルトの引数に従えないのか?
2022-04-24 02:34:48
質問
なぜこのコード片はSyntaxErrorを投げるのでしょうか?
>>> def fun1(a="who is you", b="True", x, y):
... print a,b,x,y
...
File "<stdin>", line 1
SyntaxError: non-default argument follows default argument
一方、次のコード片は目に見えるエラーなしに実行されます。
>>> def fun1(x, y, a="who is you", b="True"):
... print a,b,x,y
...
解決方法は?
すべての必須パラメータは、デフォルト引数の前に置かなければなりません。なぜなら、それらは必須であるのに対し、デフォルトの引数はそうではないからです。構文的には、次のようになります。
不可能
もし混合モードが許されるなら、インタープリタはどの値がどの引数に一致するかを決定することができます。A
SyntaxError
は、引数が正しい順序で与えられていない場合に発生します。
この関数を用いて、キーワード引数を見てみましょう。
def fun1(a="who is you", b="True", x, y):
... print a,b,x,y
上記のように関数を宣言することが許されるとします。 そして、上記の宣言で、次のような(通常の)位置引数やキーワード引数の呼び出しを行うことができます。
func1("ok a", "ok b", 1) # Is 1 assigned to x or ?
func1(1) # Is 1 assigned to a or ?
func1(1, 2) # ?
関数呼び出しにおける変数の割り当てをどのように提案するか、デフォルトの引数をキーワード引数とともにどのように使用するか。
>>> def fun1(x, y, a="who is you", b="True"):
... print a,b,x,y
...
参考文献 O'Reilly - Core-Python
この関数は、上記の関数呼び出しに対して、構文的に正しいデフォルトの引数を使用します。
キーワード引数の呼び出しは、順番が正しくない位置の引数を提供することができるため便利ですが、デフォルト引数と組み合わせることで、足りない引数をスキップするために使用することもできます。
関連
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み] 割り当て後にリストが予期せず変更されました。その理由と防止策を教えてください。
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] なぜlist.join(string)ではなくstring.join(list)なのでしょうか?
-
[解決済み] Pythonのクラスはなぜオブジェクトを継承するのですか?
-
[解決済み] Argparse オプションの位置引数?
-
[解決済み】なぜPythonはこのJSONデータをパースできないのですか?[終了] PythonがこのJSONデータをパースできないのはなぜですか?
-
[解決済み】Argparse: 必須引数が「オプション引数」の下に表示される?
最新
-
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関数の高度な応用を解説
-
Evidentlyを用いたPythonデータマイニングによる機械学習モデルダッシュボードの作成
-
Python 入出力と高次代入の基礎知識
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】 AttributeError("'str' object has no attribute 'read'")
-
[解決済み】IndexError: invalid index to scalar variableを修正する方法
-
[解決済み】Flaskのテンプレートが見つからない【重複あり
-
[解決済み】 'numpy.float64' オブジェクトは反復可能ではない