[Python]Function Parameters(2)


variable length arguments


パラメータ名に*を付けると、入力値はすべてtupleにマージされるため、複数の入力値が受信されます.
def example(num1, num2, *args)
    print(num1)
    print(num2)
    print(args)

example(1, 6, 3, 4, 5)
上記の関数が呼び出されると、num 1およびnum 2はそれぞれ1および6を渡す.
*argsという名前のパラメータはtupleの形で3,4,5を伝達する.

上記のコードを実行するとエラーが発生します.
「鄭雨盛」は名前で伝えた.
残りの3つのパラメータが*argsに渡された場合、ageに割り当てられたパラメータはありません.
すなわち,どこからどこまで*argsに渡さなければならないパラメータであるかを特定できないため,エラーが発生した.
この問題を解決するには、1)*argsをパラメータの最後に配置します.
20をKeword論点に変えればいい
1) 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")
   #age의 위치가 바뀌었으니 20의 위치도 옮겨준다.
    
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", age = 20)
上記のように、修正コードは次の結果を出力します.
name=정우성
args=('01012341234', 'seoul')
age=20

以上のコードでもエラーが発生します.
パラメータとパラメータの順序を変更します.
20にキーワードを指定すると、エラーを解決できます.
def mixed_params(name="아이유", *args, age, 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("정우성", "01012341234", "male" , age = 20, mobile="01012341234", address="seoul")

#출력
name=정우성
args=('01012341234', 'male')
age=20
kwargs={'mobile': '01012341234'}
address=seoul