もう1つ回答を追加したいと思います。
関数の呼び出しで、キーワード引数と共に誤った位置順序で位置パラメーターを渡そうとすると発生します。
there is difference between parameter and argument
あなたはここでPythonの引数とパラメータについて詳しく読むことができます
def hello(a,b=1, *args):
print(a, b, *args)
hello(1, 2, 3, 4,a=12)
3つのパラメーターがあるため:
aは位置パラメータです
b = 1はキーワードおよびデフォルトパラメータです
* argsは可変長パラメーターです
したがって、最初にを位置パラメーターとして割り当てます。つまり、位置引数に位置順序で値を提供する必要があります。ここでは順序が重要です。ただし、呼び出し関数のaの場所に引数1を渡してから、に値を提供し、キーワード引数として扱います。現在、2つの値があります。
1つは位置値です:a = 1
2番目はa = 12であるキーワード値です
解決
に変更する必要hello(1, 2, 3, 4,a=12)
があるhello(1, 2, 3, 4,12)
ので、aは1の位置値のみを取得し、bは値2を取得し、残りの値は* args(可変長パラメーター)を取得します。
追加情報
* argsが2,3,4を取得し、aが1を取得し、bが12を取得する必要がある場合
そして、私たちはこのようにすることができます
def hello(a,*args,b=1):
pass
hello(1, 2, 3, 4,b=12)
もっと何か :
def hello(a,*c,b=1,**kwargs):
print(b)
print(c)
print(a)
print(kwargs)
hello(1,2,1,2,8,9,c=12)
出力:
1
(2, 1, 2, 8, 9)
1
{'c': 12}
self
暗黙より明示が優れているのかについて満足のいく答えは得られませんthis
。