ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 51 - (파이썬) 가변 매개변수 함수
    study with Q - 파이썬 2024. 6. 3. 20:57

    어제 봤지만 또 새로운 개념...

    # parameter
    def prt(str, times):
      for i in range(times) :
        print(str)
    
    # argument
    prt("독도는 한국 땅",5)
    >>>
    독도는 한국 땅
    독도는 한국 땅
    독도는 한국 땅
    독도는 한국 땅
    독도는 한국 땅


    → 매개변수를 함수 정의 때 넣은 변수를 n개 만들었다면
    함수 호출 때에도 n개의 매개변수를 전달해야 함


    # 가변 매개변수 함수
    : 매개변수가 가변적으로 변하는 함수
    (가변 매개변수는 함수를 정의할 때, 매개변수의 개수를 고정하지 않고, 필요에 따라 유동적으로 매개변수를 추가할 수 있게 만들어주는 기능입니다. 이 기능을 사용하면 함수 호출 시 매개변수의 개수를 다양하게 지정할 수 있어서, 함수의 재사용성을 높이고 코드의 유연성을 증가시키는 데에 큰 도움을 줄 수 있습니다. 라고 어디 블로그에서 긁어옴...)

     

    ...만들어볼까요?

    prt_n_times 횟수와 출력대상이 나오는 함수라고 하고 구현해보자

     

    # 리스트를 받는 형태로 구현하기

    # prt_n_times(횟수, [리스트]])
    def prt_n_times(howmany, Liszt):
      for i in range(howmany) :
        for yoso in Liszt : 
          print(yoso)
    
    # argument
    prt_n_times(3, ["킴 카다시안이냐 킴 카사디안이냐?", "다시"])
    >>>
    킴 카다시안이냐 킴 카사디안이냐?
    다시
    킴 카다시안이냐 킴 카사디안이냐?
    다시
    킴 카다시안이냐 킴 카사디안이냐?
    다시

     

     

    근데 저는 출력 대상을 리스트 말고 쉼표로 넣고 싶은디요...

    →  전개연산자* 등장!

    def prt_n_times(howmany, *Liszt):
      # 궁금하니까 전개연산자*를 붙인 Liszt를 출력해보면
      print(Liszt)
      for i in range(howmany) :
        for yoso in Liszt : 
          print(yoso)
    
    prt_n_times(3, "킴 카다시안이냐 킴 카사디안이냐?", "다시")
    >>>
    ('킴 카다시안이냐 킴 카사디안이냐?', '다시') #이건 튜플이라는 거란다
    킴 카다시안이냐 킴 카사디안이냐?
    다시
    킴 카다시안이냐 킴 카사디안이냐?
    다시
    킴 카다시안이냐 킴 카사디안이냐?
    다시

     

    그래서 가변 매개변수로 변경하고 싶으면 리스트로 받고 싶었던 변수 앞에 *연산자만 붙이면 된다!

     

     

    # 전개 연산자와 조합하기

    i have a 리스트

    you have a 가변 매개변수 함수 

    도킹 실패...?

     

    Nope! 리스트를 가변 매개변수 함수에 매개변수로 전달하고 싶을 때는 전개연산자*를 사용해보세요

    # 리스트를 가변 매개변수 함수에 매개변수로 전달하고 싶을 때
    def prt_n_times(횟수, *리스트):
      for i in range(횟수) :
        for 요소 in 리스트 : 
          print(요소)
    
    # 내가 가진 리스트
    nealist = ["1","2","3","drink"]
    # 전개 연산자로 쫙쫙 쪼개
    prt_n_times(2, *nealist)
    
    >>> 
    1
    2
    3
    drink
    1
    2
    3
    drink

     

    # 주의사항

    : 가변 매개변수 함수 뒤에는 일반 매개변수가 올 수 없어요. 뭔 소리냐면

    def fn(*list,tms):
      for i in range(tms) :
        for element in list : 
          print(element)
    
    fn("fail", "insert coin", "start", 4)
    >>>
    #이렇게 하면 반복 횟수인 4까지 리스트로 묶어버려서 횟수의 매개변수가 누락된 것처럼 처리된다
    TypeError: fn() missing 1 required keyword-only argument: 'tms'

     

    그래서 마지막 숫자는 횟수라는 것을 분명히 해줘야 함. 요렇게

    def fn(*list,tms):
      for i in range(tms) :
        for element in list : 
          print(element)
    
    fn("fail", "insert coin", "start", tms=4)
    >>>
    fail
    insert coin
    start
    fail
    insert coin
    start
    fail
    insert coin
    start
    fail
    insert coin
    start

     

    이러한 코드 입력 방법을 키워드 매개변수라고 하는 데 그건 나중에...

     

    오늘의 강의 요약 : 가변 매개변수로 변경하고 싶으면 리스트로 받고 싶었던 변수 앞에 *연산자만 붙이면 된다.

     

     


    https://replit.com/@wh3308/gabyeon-maegaebyeonsu-hamsu

Designed by Tistory.