1. keyworded variable length of arguments: **kwargs

    • more like keworded arguments of variable lengths
    • advantage
      • Argument 수를 0부터 N까지 유동적으로 넘겨줄 수 있음
      • keyword가 정해져있지 않음: 원하는 keyword를 유동적으로 사용 가능
      • dictionary 형태로 저장됨: 함수 body 안에서는 dictionary 처럼 사용
    def buy_A_car(**kwargs):
     print(f"다음 사양의 자동차를 구입하십니다:")
    
     for option in kwargs:
         print(f"{option} : {kwargs[option]}")
    
     buy_A_car(seat="가죽", blackbox="최신", tint="yes")
    =>  {'seat': '가죽', 'blackbox': '최신', 'tint': 'yes'}
  2. Non-keyworded variable length of arguments: *args

    • kwargs와 유사하나, non-keyworded이기 때문에 순서대로 값을 전달하는 방식도 가능함

    • tuple로 변환되어 함수에 전달됨

      def print_arguments(*args):
        print(f"arguments : {args}")
      
      print_arguments(1, 2, 3)
      => arguments: (1, 2, 3)
  3. Mixing kwargs and args

    def do_something(*args, **kwargs):
      some_code
    • advantage: 어떠한 형태와 수의 argument도 허용 가능한 함수가 됨