Ossian Story
article thumbnail
Published 2017. 12. 20. 16:03
[Python] 함수 [Dev]/Python



[Python] 함수


함수란?


코드를 작성하다 보면 똑같은 내용의 코드를 반복해서 작성해야 하는 순간이 발생됩니다.

이럴 때 함수 정의한 후 사용하면 반복적인 코드 작성을 줄일 수 있으며 코드의 흐름을 일목요연하게 처리할 수 있습니다.


함수의 기본문법

코드
--------------------------------함수 정의-----------------------------------------------------
def sum(a,b):       # sum이라는 이름의 함수 및 인자값 정의
    return a + b    # a와 b를 더하여 return값을 통해 sum 함수를 호출한 객체에게 결과값을 돌려줌
----------------------------------------------------------------------------------------------
 
num1 = 1
num2 = 2
= sum(num1,num2)  # c라는 변수는 sum 함수를 호출하고 sum 함수의 인자값 num1,num2을 대입합니다.
print(c)            # sum 함수에 인자 값이 대입되어 a에는 num1 값이, b에는 num2 값이 대입된 후 산술처리를 합니다.
                    # 처리가 완료된 산술값은 return을 통해서 sum 함수를 호출한 c변수에 산술값이 대입됩니다.
결과
3



정의한 sum 함수의 작동방법

" 인자 값 → 함수 → 결과 값"으로 함수가 작동됩니다.




함수의 종류


인자 값이 없는 함수

함수는 인자 값 없이 생성할 수 있습니다. welcome 함수를 호출할 경우 인자 값은 없지만 return값이 있으므로 함수를 호출한 객체에 대입됩니다. 

코드
----함수 정의----
def welcome():      # 인자 값 없이 welcome 함수 정의
    return '안녕하세요.'
----------------
print(welcome())    # welcome 함수의 return 값이 대입되어 출력 
 
결과
안녕하세요.




결과 값이 없는 함수

함수는 결과 값 없이 생성할 수 있습니다.

함수의 결과 값은 Return을 통해서만 전달됩니다. sum 함수에 a와 b인자 값에 숫자는 정상적으로 대입되어 산술처리는 되지만

결과를 Return할 수 없으므로 결과 값이 출력되지 않습니다.

코드
----함수 정의----
def sum(a,b):
    print('%d, %d의 합은 %d입니다.' % (a, b, a+b))
----------------
print(sum(4,5))    # 4와 5는 sum함수의 a,b 인자 값에 각각 대입되어 함수가 실행됩니다. 
 
결과 # 결과 값 없음.
 




인자 값도 결과 값도 없는 함수

코드
----함수 정의----
def aa():
    print('hi')
----------------
aa()    # aa함수를 호출할 경우 함수안에 있는 print가 실행되어 hi를 출력할 수 있습니다.
        # 이때 출력된 'hi'는 결과 값이 아님을 참고합니다.
 
print(aa()) # print를 사용하여 함수 aa를 출력 할 경우 'None'을 반환합니다. 'None'은 거짓이나 값이 없는 것을 나타냅니다.
 
결과 
hi
None




여러 개의 인자 값을 받는 함수 - 1

코드
----함수 정의----
def sum_attack(*attacks):    # 인자 값 변수명 앞에 '*'를 붙여서 변수를 만들면 인자 값을 모두 튜플로 만들어 줍니다.
    sum = 0
    for i in attacks:        # for 반복문으로 i 변수에 attacks 변수에 대입되어 있는 튜플 형태의 인자 값을 대입합니다.
        sum = sum + i        # sum 변수에 i 값을 더합니다.
    return sum
----------------
 
atk = sum_attack(1,3,5)
print(atk)
 
결과 
9




여러 개의 인자 값을 받는 함수 - 2

코드
----함수 정의----
def cal(choice, *num):            # 인자 값 choice와 *num 인자 값 변수 생성
    result = 0
    if choice == '더하기':        # Choice 인자 값이 '더하기'일 경우 아래 코드 실행
        for i in num:
            result = result + i
    elif choice == '곱셈':        # Choice 인자 값이 '곱셈' 일 경우 아래 코드 실행 
        result = 1
        for i in num:
            result = result * i
    return result
----------------
 
print(cal('더하기',1,2,3,4,5,6,7,8,9,10))
 
결과 
55





함수의 결과 값(return)은 항상 하나 입니다.


함수의 결과 값(return)은 항상 하나입니다.

즉, return을 여러개 넣는다고 해도 return은 한번만 동작하게 됩니다. 그 이유는 함수 내에서 return이 실행되고 난 후 함수를 종료하기 때문입니다.

코드
----함수 정의----
def sum_attack(attack1,attack2):    # sum_attack 함수에 인자 값 attack1, attack2를 대입
    return attack1 + attack2        # 함수를 호출한 객체에 return 값으로 attack1 + attack2를 전달
    return attack1 * attack2        # return이 실행되면 함수를 종료하므로 attack1 * taatack2 산술이 실행되지않음 
----------------
 
print(sum_attack(1,2))
 
결과 
3




함수의 결과 값(return)을 여러개 하고자 할 경우 아래와 같이 튜플로 return하여 사용할 수 있습니다.

코드
----함수 정의----
def sum_attack(attack1,attack2):
    return attack1 + attack2, attack1 * attack2 # attack1 + attack2와 attack1 * attack2의 산술 결과 값을 튜플로 return 합니다.
----------------
 
print(sum_attack(1,2))
 
결과 
(32)




튜플로 받은 함수의 결과 값을 슬라이싱하여 사용할 수 있습니다.

코드
----함수 정의----
def sum_attack(attack1,attack2):
    return attack1 + attack2, attack1 * attack2
----------------
 
sum, mul = sum_attack(1,2)    # sum, mul 변수에 sum_attack return 튜플 값을 슬라이싱하여 각각 대입 
print(sum)
print(mul)
 
결과 
3
2



'[Dev] > Python' 카테고리의 다른 글

[Python] 클래스  (0) 2017.12.22
[Python] 파일 쓰기 / 읽기 / 추가  (0) 2017.12.21
[Python] WHILE 반복문  (0) 2017.12.20
[Python] FOR 반복문  (0) 2017.12.05
[Python] IF 제어문  (0) 2017.12.05
profile

Ossian Story

@ossians