Python 기초

키워드 인수

파이썬에서 대부분의 인수들은 함수 호출 시에 위치에 의하여 구별됩니다. 예를 들어 power(1, 10)은 power(10, 1)과는 다르다.

함수 호출 power(1, 10)은 1의 10 제곱값을 계산할 것이고 power(10, 1)은 10의 1 제곱을 계산할 것이다.

 

하지만 키워드 인수(keyward argument)는 인수들 앞에 키워드를 두어서 인수들을 구분합니다.

키워드 인수는 함수를 호출할 때 인수의 이름을 명시적으로 지정해서 전달하는 방법입니다. 예를 들어 다음과 같이 인수가 3개인 함수가 있다고 가정합시다.

def calc(x, y, z):
	return x + y + z

 

물론 calc() 함수는 다음과 같이 호출할 수 있습니다.

def calc(x, y, z):
	return x + y + z

print(calc(10, 20, 30))

 

<실행 결과>

60

 

10은 매개변수 x로 전달되고, 20은 매개변수 y로, 30은 매개변수 z로 전달됩니다. 이와 같은 기본 인수 전달 방식을 위치 인수(positional argument)라고도 합니다.

하지만 우리는 다음과 같이 매개 변수의 이름에 값을 직접 대입하여서도 전달할 수 있습니다.

def calc(x, y, z):
	return x + y + z

print(calc(x=10, y=20, z=30))

 

<실행 결과>

60

 

이 방법의 장점은 인수의 위치가 매개변수의 위치와 달라도 된다는 것입니다. 키워드 인수를 사용할 때는 인수들이 어떤 순서로 전달되어도 상관 없습니다.

def calc(x, y, z):
	return x + y + z

print(calc(y=20, x=10, z=30))

 

<실행 결과>

60

 

위치 인수와 키워드 인수과 섞일 수 있지만 위치 인수가 키워드 인수 앞에 나와야 합니다.

def calc(x, y, z):
	return x + y + z

print(calc(10, y=20, z=30))

 

<실행 결과>

60

 

키워드 인수 뒤에 위치 인수가 나올 수 없으므로 다음과 같이 하면 잘못된 것입니다.

SyntaxError: positional argument follows keyword argument

 

도전 과제

1. 사칙 연산을 수행하는 4개의 함수(add(), sub(), mul(), div())를 작성하고 이들을 이용하여 10 + 20 * 30을 계산하여 봅시다.

함수를 호출할 때는 키워드 인수를 사용하여 호출해봅시다.

 

<실행 결과>

610

 


2. 섭씨 온도를 화씨 온도로, 또 그 반대로 변환하는 프로그램을 작성해봅시다.

 

<실행 결과>

'c' : 섭씨 온도에서 화씨 온도로 변환
'f' : 화씨 온도에서 섭씨 온도로 변환
'q' : 종료
메뉴에서 선택하세요 : c
섭씨 온도 입력 : 100
화씨 온도는 212.0 입니다.
'c' : 섭씨 온도에서 화씨 온도로 변환
'f' : 화씨 온도에서 섭씨 온도로 변환
'q' : 종료
메뉴에서 선택하세요 : q
프로그램을 종료합니다.

 


3. 프로그램을 작성하다보면 사각형의 길이처럼 입력이 항상 양수여야 하는 경우가 종종 있습니다.

하지만 봉민이 같이 성격이 이상한 친구들은 무엇을 입력할지 미리 알 수가 없습니다.

이런 경우를 대비하여 양수만을 입력받아 계산을 하는 함수를 작성하고 실행해봅시다.

 

<실행 결과>

사각형의 가로 : -20
양수만 입력하세요!
사각형의 가로 : 20
사격형의 세로 : -10
양수만 입력하세요!
사각형의 세로 : 10
면적 = 200