[Python] Function parameters
Parameter Default Value
関数のパラメータにdefault値を定義する場合、関数を呼び出すときに値を渡す必要はありません.値を渡さない場合、default値が自動的に渡されます.
この場合、default valueparameterを宣言する際の位置が重要です.
def love_you(my_name = "kim", your_name):
print(f"{my_name} loves {your_name}")
> Traceback (most recent call last):
File "python", line 1
SyntaxError: non-default argument follows default argument
non-default valueparameterの前にdefault valueparameterを宣言すると構文エラーが発生します.Pythonからパラメータを受信する順番を決めましたが、守らないとエラーが発生します
def example(a, b, c=None, r='w', d=[], *ae, **ae)
-a, b: positional parameter
-c = none : optional parameter
-r = 'w' : keyword parameter
-d=[] : list parameter
-*ae : keyword-only
-**acb : var-keyword parameter
エラーの原因は、生成された関数がパラメータの順序を定義していない場合、関数がどのパラメータに対してどの値を受信すべきかを決定できないためです.! Python 3以降から「*」を使用し、エラーは発生しません.
def fun1(a='kim', b='True', *, x, y):
pass
fun1(x=2, y=2)
位置パラメータ(位置パラメータ)def func_param_with_var_args(name, *args, age):
print("name=",end=""), print(name)
print("args=",end=""), print(args)
print("age=",end=""), print(age)
func_param_with_var_args("kim", "01012341234", "seoul", 40)
この場合、次のエラーが発生します.TypeError: func_param_with_var_args() missing 1 required keyword-only argument: 'age'
このときargsは「kim」からすべての値を取得し始め,ageに対応するパラメータは得られなかった.この場合、*argsを末尾に送信すると、解決する
def func_param_with_var_args(name, age, *args):
print("name=",end=""), print(name)
print("age=",end=""), print(age)
print("args=",end=""), print(args)
func_param_with_var_args("kim", 40, "01012341234", "seoul")
variablelengthキーワードarguments(可変キーワード引数)def func_param_with_kwargs(name, age, **kwargs, address=0):
print("name=",end=""), print(name)
print("age=",end=""), print(age)
print("kwargs=",end=""), print(kwargs)
print("address=",end=""), print(address)
func_param_with_kwargs("kim", "20", mobile="01012341234", address="seoul")
SyntaxError: invalid syntax
これはエラーです.varable length keyword argumentsは他のargumentsの後ろにあるべきではないので、最後に置くと解決します.def func_param_with_kwargs(name, age, address=0, **kwargs):
print("name=",end=""), print(name)
print("age=",end=""), print(age)
print("address=",end=""), print(address)
print("kwargs=",end=""), print(kwargs)
func_param_with_kwargs("kim", "20", address="seoul", mobile="01012341234")
位置パラメータ(位置パラメータ)&variablelengthキーワードパラメータ(可変キーワードパラメータ)def mixed_params(name="lilo", *args, age, **kwargs, address):
print("name=",end=""), print(name)
print("args=",end=""), print(args)
print("age=",end=""), print(age)
print("kwargs=",end=""), print(kwargs)
print("address=",end=""), print(address)
mixed_params(40, "kim", "01012341234", "female" ,mobile="01012341234", address="seoul")
上記の場合、位置パラメータはdefault valueの後になるので、位置パラメータを前に減算し、位置パラメータのaddressをキー値として受信するので、変数パラメータとキーワード変数パラメータの間に挿入してエラーを解決できます.最初はキー値で受信するため、フォーマットをaddress=0に変更し、操作を変更することなく別の位置に移動します.
def mixed_params(age, name="아이유", *args, address, **kwargs):
print("age=",end=""), print(age)
print("name=",end=""), print(name)
print("address=",end=""), print(address)
print("args=",end=""), print(args)
print("kwargs=",end=""), print(kwargs)
mixed_params(20, "lilo", "01012341234", "female" , address="seoul", mobile="01012341234")
Reference
この問題について([Python] Function parameters), 我々は、より多くの情報をここで見つけました https://velog.io/@kimlilo/parameterテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol