[Python] 함수에서 위치 인수와 키워드 인수 사용하기
- Language/Python
- 2020. 10. 15.
함수에서 위치 인수, 키워드 인수를 사용하는 방법과 리스트, 딕셔너리 언패킹을 황ㄹ용하는 방법을 알아보자.
print(10, 20, 30)
>>>10, 20, 30
위치 인수를 사용하는 함수를 만들고 호출한다.
def print(numbers(a, b, c):
print(a)
print(b)
print(c)
fprint_numers에 숫자 세 개를 넣으면 각 줄에 숫자가 출력 된다.
언 패킹 사용하기
x = [10, 20, 30]
print_numbers(*x)
>>>10, 20, 30
x라는 리스트를 print에 넣었을 뿐인데 정상적으로 출력 되었다.
언패킹이란 리스트(튜플)앞에 * 붙이면 print_numbers(10, 20, 30)과 똑같은 동작이 작동 된다.
다른 말로는 리스트의 포장을 푼다는 뜻이 된다.
이때, 함수의 규칙상 개수가 다르면 함수 호출을 할 수가 없다.
가변 인수 함수 만들기
def print_numbers(*args):
for arg in args:
print(arg)
언패킹을 어디서 사용할 까? 인수의 개수가 정해지지 않은 가변 변수에 많이 사용한다.
같은 함수에 인수 한 개를 넣을 수도 있고 열 개를 넣을 수도 있다.
print_numbers 함수에 숫자를 넣어서 호출해본다면, 숫자를 한 개 넣으면 한 개 출력,
열 개 넣으면 열 개가 출력된다. 즉 넣은 숫자 개수만큼 출력되는걸 봀 수 있다.
이렇게 함수에 인수 여러개를 직접 넣어도 되고, 리스트(튜플) 언패킹을 사용해도 된다.
이를 암묵적 오버로딩이라고 부른다.
키워드 인수 사용하기
def personal_info(name, age, address):
print('이름 : ', name)
print('나이 : ', age)
print('주소 : ', address)
기본적인 함수를 사용 할 때, 인수의 순서와 용도를 함께 외워서 사용한다.
이제 이렇게 사용할 경우, 이름, 나이, 주소라는 순서를 알아야 사용 할 수가 있다.
그러나 파이썬은 인수의 순서와 용도를 매번 기억하지 않도록 키워드 인수라는 기능을 제공한다.
인수에 이름을 붙이는 기능인데 키워드 = 값 형식으로 사용한다.
personal_info(name='홍길동', age=30, address='서울시 용산구 이촌동')
함수를 호출할 때 인수의 용도가 명확하게 보여서 키워드에 해당하는 값이 들어가는 것을 볼 수 있다.
순서를 지키지 않고 값이 들어간다는 장점이 있다.
키워드 인수와 딕셔너리 언패킹 사용하기
def personal_info(name, age, address):
print('이름 : ', name)
print('나이 : ', age)
print('주소 : ', address)
x = {'name' : '홍길동', 'age':30, 'address':'서울시 용산구 이촌동'}
prersonal_info(**x)
딕셔너리 앞에 **(애스터리스크)를 두개 붙여서 함수에 넣어준다.
딕셔너리의 '키워드':값 형식으로 인수를 저장하고, 앞에 ** 붙여서 함수를 넣는다면 함수가 작동 되는 것을 볼 수 있다.
이 때 딕셔너리의 키워드(키)값은 반드시 문자열 형태여야 한다.
딕셔너리 언패킹을 사용할 때는 함수의 매개변수 이름과 딕셔너리의 키 이름이 가타야 한다.
또한, 매개변수 개수와 딕셔너리 키의 개수도 같아야 한다.
만약 이름과 개수가 다르면 함수를 호출 할 수 없다.
매개변수에 초기값 지정하기
def personal_info(name, age, address='비공개')
personal_info('홍길동', 30)
함수를 호출 할 때 항상 인수에 값을 넣어서 전달했다. 그러나 인수를 생략할 수도 있다.
함수의 매개변수에 초기값을 지정하면, 매개변수 = 값 형식으로 저장된다.
매개변수를 생략 된 상태로 받을 경우, 초기값이 작동 되는 원리이다.
그러나 초기값을 지정할 때 한 가지 주의할 점이 있다.
초기값을 지정된 매개변수는 다음에는 초기값이 없는 매개변수가 올 수가 없다.
즉, 초기값 있는 매개변수는 항상 오른쪽에 존재해야 한다.
'Language > Python' 카테고리의 다른 글
[Python] 변수의 사용범위 알아보기 (0) | 2020.10.15 |
---|---|
[Python] 람다 표현식 사용하기 (0) | 2020.10.15 |
[Python] 파일사용하기 (0) | 2020.10.14 |
[Python] 문자열 응용하기 (0) | 2020.10.14 |
[Python] 2차원 리스트 사용하기 (0) | 2020.10.14 |