▶ 함수, 특수 매개변수 정의 - positional only, positionaly or keyword, keyword only (/, *)
함수 호출 시 전달인자의 값을 정의하는 위치(=순서) 또는 키워드=값 형식에 따라 전달인자의 값이 함수에 전달된다.
함수의 매개변수를 정의할 때 /(슬래시)나 *(애스터리스크)를 사용해 함수 호출 시 입력하는 전달인자의 형식을 제한할 수 있다.
def f(pos1, pos2, /, pos_or_kwd1, pos_or_kwd2, *, kwd1, kwd2):
----------- ------------------------ ----------
| | |- Keyword only
| |- Positional or keyword
|- Positional only
▶ Positional Only
함수의 매개변수를 정의할 때 /(슬래시)를 사용하면, / 앞에 정의하는 매개변수는 Positionaly Only 특성을 갖는다.
예를 들어 아래의 코드에서 처럼 func_1 함수를 호출할 때 1의 값은 pos1에, 2의 값은 pos2에 전달된다.
# python 3.9.5
def func_1(pos1, pos2):
print(pos1, pos2)
func_1(1, 2)
하지만 위의 코드에서 함수의 매개변수 정의를 아래와 같이 변경한 후 (마지막에 / 추가) func_1 함수를 호출할 때 키워드=값 형식을 사용하면 오류가 발생한다. 물론 함수의 정의에서 /를 삭제하면, 아래의 코드는 오류없이 실행된다.
# python 3.9.5
def func_1(pos1, pos2, /):
print(pos1, pos2)
func_1(pos1=1, pos2=2)
▶ Positional or Keyword
함수의 매개변수를 정의할 때 /(슬래시) 뒤에 정의하는 매개변수는 Positionaly 또는 Keyword 특성을 갖는다.
아래의 코드에서 처럼 func_1의 매개변수 pos1과 pos1은 키워드=값 형식으로 값을 받을 수 없으나, pos_kwd1과 pos_kwd2는 키워드=값 형식으로도 값을 받을 수 있다.
# python 3.9.5
def func_1(pos1, pos2, /, pos_kwd1, pos_kwd2):
print(pos1, pos2)
print(pos_kwd1, pos_kwd2)
func_1(1, 2, 3, pos_kwd2=4)
▶ Keyword Only
마지막으로 함수의 매개변수를 정의할 때 * 뒤에 정의하는 매개변수는 Keyword Only 특성을 갖는다.
아래의 코드에서 처럼 func_1의 매개변수 kwd1과 kwd2는 키워드=값 형식으로만 값을 받을 수 있다.
def func_1(pos1, pos2, /, pos_kwd1, pos_kwd2, *, kwd1, kwd2):
print(pos1, pos2)
print(pos_kwd1, pos_kwd2)
print(kwd1, kwd2)
func_1(1, 2, 3, pos_kwd2=4, kwd1=5, kwd2=6)
따라서 아래의 코드와 같이 func_1 함수를 호출할 때 매개변수 kwd1 또는 kwd2에 대하여 키워드=값 형식을 사용하지 않으면 오류가 발생한다.
# python 3.9.5
def func_1(pos1, pos2, /, pos_kwd1, pos_kwd2, *, kwd1, kwd2):
print(pos1, pos2)
print(pos_kwd1, pos_kwd2)
print(kwd1, kwd2)
func_1(1, 2, 3, pos_kwd2=4, 5, kwd2=6)
물론 사용 목적에 따라 아래와 같이 Keyword Only 특성 만을 갖는 매개변수 정의 및 사용도 가능하다.
# python 3.9.5
def func_1(*, kwd1, kwd2):
print(kwd1, kwd2)
func_1(kwd1='hello', kwd2='world')
'코딩 > 파이썬 기초' 카테고리의 다른 글
[Python] 파이썬 튜토리얼 020. 함수 매개변수에 별표 ** 사용 (*=애스터리스크, **kw) (0) | 2021.06.12 |
---|---|
[Python] 파이썬 튜토리얼 019. 함수 매개변수에 별표 * 사용(*=애스터리스크, *args) (0) | 2021.06.11 |
[Python] 파이썬 튜토리얼 018. 함수 호출 시 키워드=값 형식으로 전달인자 값 설정 (0) | 2021.06.04 |
[Python] 파이썬 튜토리얼 017. 함수의 매개변수 값 초기화 (0) | 2021.05.30 |
[Python] 파이썬 튜토리얼 016. 함수 종료 및 값 반환 키워드 return (0) | 2021.05.30 |