可変パラメータと位置パラメータ
🐚 Keyword Arguments
以前に学習した関数は、定義された関数のparameter
の順序でparameter
を超えなければならない.しかし、keyword arguments
を使用すると、コードをより簡単に、より明確に読むことができます.
例def name_and_age(my_name, my_age):
print(f"{my_name} is {my_age} years old")
name_and_age(my_name="Jang", my_age=25)
# "Jang is 25 years old"
Mixing positional arguments
順番に置いてあるのはpositional arguments
です.関数を呼び出すときは、positoinal arguments
とkeyword arguments
を混合して使用できます.def name_and_age(my_name, my_age):
print(f"{my_name} is {my_age} years old")
name_and_age("Jang", my_age=25)
# "Jang is 25 years old"
しかし、Positional arguments
は順序を守らなければならない.keyword arguments
の順序が異なっても構いませんが、呼び出しが次のようになっている場合は、name_and_age(my_age=25,"Jang")
SyntaxError
が発生します.
Parameter Default Value
また、Parameter
およびdefault
の値を事前に定義することもできます.次のコードに示すように、呼び出し時にparameter
の値を定義することなく自動的に入力されます.def name_and_age(my_name, my_age=25):
print(f"{my_name} is {my_age} years old")
name_and_age("Jang")
# "Jang is 25 years old"
🙋🏼 予想される問題
1
Q.定義関数を学んだ場合、non-default valueparameterより前にdefault valueparameterを定義することはできません.どうしていけないと思うの?
A.default value parameter
は、関数を呼び出す際にdefault
のparameter
を呼び出す必要があるため、効率が低下している.
2def 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)
上記のコードは*args
からname
の後のすべてのparameter
にインポートされ、age
に入るparameter
は残りません.誤りを正すために、def func_param_with_var_args(name, *args):
print("name=",end=""), print(name)
print("args=",end=""), print(args[0:2])
print("age=",end=""), print(args[2])
func_param_with_var_args("정우성", "01012341234", "seoul", 20)
上のコードに従って書けばいいです.
3def 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
をすべて格納し、key arguments
もaddress
に入った.次の図のように、コードを変更するとエラーが解決する可能性があります.def func_param_with_kwargs(name, age, **kwargs,):
print("name=",end=""), print(name)
print("age=",end=""), print(age)
print("kwargs=",end=""), print(kwargs)
print("address=",end=""), print(list(kwargs.items())[1][1])
func_param_with_kwargs("정우성", "20", mobile="01012341234", address="seoul")
4def 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")
上記のコードは、**kwargs
が最初に呼び出されたときに最初のage
に入り、関数で定義された順序が3番目に入り、一番前に置かれます.もう1つの方法は、parameter
の順序を後方に送信し、20
を削除し、age``parameter
から取り出すことである.
また,*args
と**kwargs
も以前の問題と同様に誤りがあったため,同様に解決した.
def mixed_params(age, name="아이유",*args,**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(list(kwargs.items())[1][1])
mixed_params(20, "정우성", "01012341234", "male" ,mobile="01012341234", address="seoul")
Reference
この問題について(可変パラメータと位置パラメータ), 我々は、より多くの情報をここで見つけました
https://velog.io/@jun17114/가변인수-위치인수
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
def name_and_age(my_name, my_age):
print(f"{my_name} is {my_age} years old")
name_and_age(my_name="Jang", my_age=25)
# "Jang is 25 years old"
def name_and_age(my_name, my_age):
print(f"{my_name} is {my_age} years old")
name_and_age("Jang", my_age=25)
# "Jang is 25 years old"
name_and_age(my_age=25,"Jang")
def name_and_age(my_name, my_age=25):
print(f"{my_name} is {my_age} years old")
name_and_age("Jang")
# "Jang is 25 years old"
1
Q.定義関数を学んだ場合、non-default valueparameterより前にdefault valueparameterを定義することはできません.どうしていけないと思うの?
A.
default value parameter
は、関数を呼び出す際にdefault
のparameter
を呼び出す必要があるため、効率が低下している.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("정우성", "01012341234", "seoul", 20)
上記のコードは*args
からname
の後のすべてのparameter
にインポートされ、age
に入るparameter
は残りません.誤りを正すために、def func_param_with_var_args(name, *args):
print("name=",end=""), print(name)
print("args=",end=""), print(args[0:2])
print("age=",end=""), print(args[2])
func_param_with_var_args("정우성", "01012341234", "seoul", 20)
上のコードに従って書けばいいです.3
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
をすべて格納し、key arguments
もaddress
に入った.次の図のように、コードを変更するとエラーが解決する可能性があります.def func_param_with_kwargs(name, age, **kwargs,):
print("name=",end=""), print(name)
print("age=",end=""), print(age)
print("kwargs=",end=""), print(kwargs)
print("address=",end=""), print(list(kwargs.items())[1][1])
func_param_with_kwargs("정우성", "20", mobile="01012341234", address="seoul")
4def 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")
上記のコードは、**kwargs
が最初に呼び出されたときに最初のage
に入り、関数で定義された順序が3番目に入り、一番前に置かれます.もう1つの方法は、parameter
の順序を後方に送信し、20
を削除し、age``parameter
から取り出すことである.また,
*args
と**kwargs
も以前の問題と同様に誤りがあったため,同様に解決した.
def mixed_params(age, name="아이유",*args,**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(list(kwargs.items())[1][1])
mixed_params(20, "정우성", "01012341234", "male" ,mobile="01012341234", address="seoul")
Reference
この問題について(可変パラメータと位置パラメータ), 我々は、より多くの情報をここで見つけました https://velog.io/@jun17114/가변인수-위치인수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol