티스토리 뷰

6.4 반환값이 있는 함수 혹은 반환값이 없는 함수(Functions with/without Return Values)

 

- 함수가 반드시 반환 값을 가지고 있어야 하는 것은 아니다.

- 값을 반환하지 않는 함수를 void 함수(void function)이라고 부른다.

 

*반환 값이 없는 함수 예제 - 성적 출력 프로그램

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def printGrade(score):
    if score >= 90.0:
        print('A')
 
    elif score >= 80.0:
        print('B')
 
    elif score >= 70.0:
        print('C')
 
    elif score >= 60.0:
        print('D')
 
    else :
        print('F')
 
def main():
    score = eval(input("Enter the score: "))
    print("The grade is ",end = "")
    printGrade(score)
 
main()
cs

- 위 예제의 printGrade() 함수는 어떤 값도 반환 하지 않는다.

어떤 값도 반환하지 않는 함수는 line 17번의 메인함수에 명령어(statements) 형태로 호출하여 사용한다.

 

*반환 값을 가지는 함수 예제 - 성적 출력 프로그램

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def getGrade(score):
    if score >= 90.0:
        return 'A' 
 
    elif score >= 80.0:
        return 'B'
 
    elif score >= 70.0:
        return 'C'
 
    elif score >= 60.0:
        return 'D'
 
    else :
        return 'F'
 
def main():
    score = eval(input("Enter the score: "))
    print("The grade is ",getGrade(score))
    
main()
 
cs

 

- 위의 코드는 반환 값을 가지는 getGrade 함수를 정의한 코드이다.

- getGrade 함수는 문자를 반환하는 함수이기 때문에 일반 문자(character)처럼 함수를 호출 할 수 있다.

 

- 원래 기술적으로 파이썬 내 모든 함수들return 명령사용하던 안하던 값을 반환한다.

- 만약 함수가 값을 반환하지 않는다면, 기본적으로 특별한 값(special value)인 None이 반환 된다.

- 그래서 반환 값을 가지지 않는 함수None 함수(None function)이라고도 부른다.

- None 값 역시 변수에 할당이 가능하며, 이 변수는 어떠한 객체도 가르키고 있지 않는다.

 

*None 값 예제

def sum(num1, num2)

total = num1 + num2

 

print(sum(1,2))

- sum 함수는 return 명령을 사용하지 않았기 때문에, 기본적으로 None 값을 반환한다. 그래서 위 코드를 실행시 None이 출력된다.

 

6.5 위치 인자와 키워드 인자(Positional and Keyword Arguments)

 

- 함수의 인자(function's arguments)위치 인자키워드 인자(Positional and Keyword Arguments) 형태로 전달된다.

- 함수의 강점은 매개변수를 이용해 일을 수행하는 것이다.

- 함수를 호출 할 때, 우리는 인자(arguments)를 매개변수(parameters)에 전달해야한다.

- 인자(arguments)에는 두 가지 종류가 있다. 하나는 위치 인자(positional arguments), 다른 하나는 키워드 인자(keyword arguments)이다.

 

- 위치 인자(positional arguments)를 전달할 때에는 호출 할 함수 헤더에 있는 각각의 매개변수 순서와 동일하게 전달하여야 한다.

 

* 위치 인자 예제

def nPrintln(message, n):

for i in range(n):

print(message)

- 우리는 위의 nPrintln 함수를 이용해 nPrintln("test", 3)로 test를 화면에 3번 출력 할 수 있다.

- 위 명령은 인자 test매개변수 message에 전달하고, 인자 3매개 변수 n에 전달 한다.

- 하지만 만약 nPrintln(3, "test")로 인자를 전달하면 오류가 나게 된다. 이를 바로 위치 인자(positional arguments)라고 말한다.

- 위치 인자는 우리가 정의한 함수 헤더 부분의 매개변수 순서, 갯수, 똑같은 타입으로 동일하게 전달하여야 한다.

 

- 키워드 인자(keyword arguments)를 이용하여 인자를 전달 할 수도 있다.

- name = velue 형식으로 인자를 전달하는데, 예를 들어 nPrintln(n = 5, message = "good") 방식으로 매개변수 n에 인자 5를 전달, 매개변수 message에 인자 "good" 을 전달한다.

 

- 위치 인자(positional arguments)와 키워드 인자(keyword arguments) 동시에 이용도 가능하다.

- 하지만 위치 인자키워드 인자 뒤로는 올 수 없다.

 

* 위치 인자(positional arguments)와 키워드 인자(keyword arguments) 동시 사용 예제

def f(p1, p2, p3)

 

f(30, p2 = 4, p3 = 10) → O

f(30, p2 =4, 10) → X

 

참고 문헌 : Introduction to Programming Using Python / Y.DANIEL LIANG



본 게시물은 개인적인 용도로 작성된 게시물입니다. 이후 포트폴리오로 사용될 정리 자료이니 불펌과 무단도용은 하지 말아주시고 개인 공부 목적으로만 이용해주시기 바랍니다.


교재 영어 원서를 직접 번역하여 정리한 게시물이므로 일부 오타, 의역이 존재할 수 있습니다. 틀린 부분이 있다면 댓글로 알려주시면 감사하겠습니다. 

댓글