TIL 11 | Python default value parameter, non-default value parameter
pythonでは、non-default valueparameterの前にdefault valueparameterを書くことはできません。
理由は何ですか
まず、non-default valueparameterは、与えられた値のないパラメータです.
# non-default value parameter
def adorable(dog, name):
print(f"{dog} {name} so cute")
逆にdefault valueparameterは、与えられた値のパラメータです.# default value parameter
def adorable(dog="poodle",name="raon"):
print(f"{dog} {name} so cute")
# non-default value parameter랑 섞어서 사용할 수 있다.
def adorable(dog,name="raon"):
print(f"{dog} {name} so cute")
adorable("poodle")
# 호출의 결과값은 "poodle raon so cute" 로, default value parameter가 할당된 경우엔 따로 argument값을 주지 않아도 기본값 "raon"이 출력된다.
混合して使用すると、順序が変更されるとエラーが発生します.def adorable(name="raon",dog):
print(f"{dog} {name} so cute")
SyntaxError: non-default argument follows default argument
発生の原因は不確実性である.簡単に言えば、non-defaultパラメータは必要な入力値であり、defaultパラメータは必要ではありません.これを混合して使用すると、関数を呼び出すとき、コンピュータはどのパラメータに一致するか分かりません.そのため、non-default valueparameterを順番に前面に置き、default valueparameterを後ろに置く必要があります.各種の誤りと誤りの過程を修正します!
1.
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("정우성", "01012341234", "seoul", 20)
実行すると、次のエラーが発生します.TypeError: func_param_with_var_args() missing 1 required keyword-only argument: 'age'
variable-length parameterの*argsの後ろにkeyword-only parameterのようなタイプが現れる可能性があります.ageセクションを次のように変更します.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("정우성", "01012341234", "seoul", age=20)
出力値は以下のとおりです.name=정우성
args=('01012341234', 'seoul')
age={'age': 20}
2.
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("정우성", "20", mobile="01012341234", address="seoul")
実行すると、次のエラーが発生します. File "main.py", line 1
def func_param_with_kwargs(name, age, **kwargs, address=0):
^
SyntaxError: invalid syntax
default value parameterはkeyword-only parameter**kwargsの後ろにあり、無効な構文エラーが発生しました.address=0は前方位置決めで解決できます.def func_param_with_kwargs(name, age, address=0, **kwargs):
print("name=",end=""), print(name)
print("age=",end=""), print(age)
print("kwargs=",end=""), print(kwargs)
print("address=",end=""), print(address)
func_param_with_kwargs("정우성", "20", mobile="01012341234", address="seoul")
出力値は以下のとおりです.name=정우성
age=20
kwargs={'mobile': '01012341234'}
address=seoul
3.
def mixed_params(name="아이유", *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(20, "정우성", "01012341234", "male" ,mobile="01012341234", address="seoul")
実行後に次のエラーが発生します. File "main.py", line 1
def mixed_params(name="아이유", *args, age, **kwargs, address):
^
SyntaxError: invalid syntax
パラメータの順序を整理すれば、エラーを解決できます.def mixed_params(age, name="아이유", *args, address,**kwargs):
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(20, "정우성", "01012341234", "male" ,mobile="01012341234", address="seoul")
出力値は以下のとおりです.name=정우성
args=('01012341234', 'male')
age=20
kwargs={'mobile': '01012341234'}
address=seoul
リファレンスhttps://getkt.com/blog/python-keyword-only-arguments/
Reference
この問題について(TIL 11 | Python default value parameter, non-default value parameter), 我々は、より多くの情報をここで見つけました https://velog.io/@sehy/TIL-11-Python-default-value-parameter-non-default-value-parameterテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol