반응형
리스트 언패킹
함수에 전달하는 파라메터를 여러개 전달 시 리스트 형태로 전달하는 방식 전달된 리스트의 요소가 '*'을 사용하여 함수에 전달할 때 나누어져 각각의 파라메터에 순서대로 전달된다.
def foo(a:int, b:int, c:int) -> int:
print(f"{a} + {b} + {c} = {a+b+c}")
foo(*[1,2,3])
params = [3,3,3]
foo(*params)
--------------------------------
1 + 2 + 3 = 6
3 + 3 + 3 = 9
가변인수 만들기
함수에 전달하는 파라메터의 갯수가 정해지지 않는 경우 가변인수를 사용하여 다양한 파라메터 갯수를 전달할 수 있다.
전달된 처음 1,2,3과 리스트 언패킹으로 전달된 4,5가 *args 가변인자로 전달외어 모두 출력되는 것을 확인할 수 있다. 가변인수에도 리스트 언페킹으로 파라메터를 전달할 수 있다.
두번째 함수는고정인자와 가변인자를 같이 사용하는 함수이다. 고정변수와 가변인수를 같이 사용하는 경우 항상 고정변수가 가변인수보다 먼저 사용되어야 한다. 출력은 고정인자로 전달된 "I"가 출력된 후 가변인자로 전달된 나머지 문자가 순서되로 출력되는 것을 확인할 수 있다.
# 가변인수 만들기
def many_parameters(*args):
for idx, arg in enumerate(args):
print(f"{idx}th argument : {arg}")
print("")
many_parameters(1,2,3,*[4,5])
# 고정변수와 가변인수 같이 사용하기
# 항상 고정변수가 가변인수보다 먼저 나와야 한다.
def param_with_params(a, *args):
print(f"{a}", end = " ")
for idx, arg in enumerate(args):
print(f"{arg}", end = " ")
print("")
param_with_params('I', *['am','a','boy'])
---------------
0th argument : 1
1th argument : 2
2th argument : 3
3th argument : 4
4th argument : 5
I am a boy
위치 인수
함수로 전달되는 인자는 함수에 정의된 인자의 순서에 맞춰 전달된다. 따라서 함수에 정의된 인자와 순서가 다르면 잘못된 정보가 전달될 수 있다.
위치인자를 사용하는 경우 함수 호출 시 인자의 이름과 전달하는 값을 "="으로 연결하여 전달하여 전달하는 인자의 순서가 다른 경우에도 정보가 원하는 순서로 전달된다.
def book_info(name, pages):
print(f"book {name} is {pages} pages")
book_info(pages=200, name="python")
---
book python is 200 pages
반응형
'Programming > Python' 카테고리의 다른 글
[Python] Default 인수 (기본값 설정) (0) | 2022.12.10 |
---|---|
[Python] 키워드인수와 딕셔너리 언패킹 (**) (0) | 2022.12.10 |
[Django] Gunicon Django에 적용하기 (0) | 2022.12.02 |
[Django] 도메인 연결을 위한 Nginx 설정 (0) | 2022.11.30 |
우분투 Python 가상환경 만들기 (0) | 2022.08.30 |