4 - Function Parameters
19614 ワード
Q1. 関数を定義するときにdefault valueparameterをnon-deffault valueparameterに定義する前に、なぜエラーが発生したのですか?
def love_you(my_name = "Suhan", 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
理由:
上の関数が
love_you("coding")
このように呼び出すと、pythonは「coding」がmy nameパラメータなのかyour nameパラメータなのか分からないため、エラーが発生します.Q2. 位置パラメータと可変パラメータ?
可変パラメータ:*args形式で表示され、任意の数のパラメータがあります.可変パラメータは、通常の数の後に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)
以上のコードがエラーの原因となります.「鄭雨盛」はnameの位置パラメータとして指定されたが、その後のパラメータは*argsパラメータに渡された.
*変更
def func_param_with_var_args(name, age, *args):
print("name=",end=""), print(name)
print("args=",end=""), print(args)
print("age=",end=""), print(age)
func_param_with_var_args("정우성", 20, "01012341234", "seoul")
Q3. 可変キーワードパラメータ(variablelengthキーワードarguments)
可変キーワードパラメータは*argsに類似したパラメータであり、キーワード**があることを区別します.kwargsの形で表現します.
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")
以上のコードがエラーの原因となります.可変キーワードパラメータ**kwargsでmobile、address値を渡し、addressパラメータの要素を消去します.
*変更
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")
Q4. 位置パラメータとキーワード可変キーワードパラメータ(variablelengthキーワードパラメータ)
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")
以上のコードがエラーの原因となります.まず、name、ageの順序が間違っているため、nameの後に残りの要素が*argsに渡されます.
*変更
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")
Reference
この問題について(4 - Function Parameters), 我々は、より多くの情報をここで見つけました https://velog.io/@dltngks54/TIL-4-Function-Parametersテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol