-
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
이러한 코드 입력 방법을 키워드 매개변수라고 하는 데 그건 나중에...
오늘의 강의 요약 : 가변 매개변수로 변경하고 싶으면 리스트로 받고 싶었던 변수 앞에 *연산자만 붙이면 된다.
'study with Q - 파이썬' 카테고리의 다른 글
53 - (파이썬) 함수 리턴과 5-1절 확인 문제 (1) 2024.06.10 52 - (파이썬) 기본 매개변수 (0) 2024.06.10 50 - 함수, 매개변수 기본 (0) 2024.06.02 49 - 프로그램, 루틴, 프로시저, 메서드, 함수 (1) 2024.06.02 46-48 - 4강 도전 문제 외 (0) 2024.06.02