본문 바로가기
개발/파이썬

파이썬 함수 - python def

by 티포스터 2021. 6. 5.
728x90

파이썬 함수 사용하기.

파이썬에서 함수를 정의하고, 인자를 사용하고, return값을 이용하는 방법을 알아보자.

 

 

코드가 길어지면 함수의 필요성을 느끼게 된다.

함수는 순차적으로 실행되는 것이 아닌, 해당 함수를 호출시에 실행된다.

 

프로그램에 여러번 반복적으로 사용되는 코드가 있다면? 이를 함수로 만들면 중복을 줄여 코드의 가독성을 높인다.

중복을 없앤다는 것은 유지보수에도 많은 도움이 된다.

중복된 코드를 수정할 일이 생겼을 때, 함수를 사용하면 해당 함수만 수정하면 된다.

이는 파이썬 함수뿐만 아니라 프로그래밍에 있어서 함수의 유용함이다.

 

파이썬 함수의 정의는 def를 이용한다.

 

def 함수명(인자):
    코드

 

아래와 같은 코드가 있을 때, 프로그램 종료 코드가 중복된다.

이를 함수로 만들면 중복된 코드를 줄일 수 있고, 프로그램 종료 process가 바뀌었다면?

깜빡하고 한 곳만 바꿨다면 바로 문제를 일으킬 수 있다.

 

...
...

if program_state == 7:
    # 프로그램 종료 process
    ...
    print("프로그램이 3분 후 종료됩니다")

...
...

if program_state == 5:
    # 프로그램 종료 process
    ...
    print("프로그램이 3분 후 종료됩니다")
...
...

 

아래와 같이 중복 코드를 함수로 만들어 사용하면 가독성을 높이고 유지보수에서 에러를 일으킬 확률을 줄여준다.

 

...
...

def exit_program():
    # 프로그램 종료 process
    ...
    print("프로그램이 3분 후 종료됩니다")

if program_state == 7:
    exit_program()

...
...

if program_state == 5:
    exit_program()
    
...
...

 

간단히 파이썬 함수 사용법을 봤는데, 좀 더 다양하게 사용하기 위해서는 인자(매개변수)를 사용해야 한다.

프로그래밍을 배우면 가장 기초적으로 배우는 함수 sum을 보자.

 

def my_sum(a, b):
    print("{0} 더하기 {1}는 {2}이다.".format(a, b, a + b))


my_sum(3, 5)

[결과화면]
3 더하기 58이다.

 

 

my_sum이라는 함수 정의와 함께 인자 a, b를 받고 있다.

이와 같이 함수에 인자를 사용하면 훨씬 폭 넓고 다양한 함수를 만들 수 있다.

 

def exit_program():
    # 프로그램 정리
    # ...
    print("프로그램이 3분 후 종료됩니다")

result = exit_program()
print(result)

[결과화면]
프로그램이 3분 후 종료됩니다
None

 

파이썬 함수사용에 있어 인자와 함께 중요한 것은 return value이다.

함수를 호출하면 말 그대로 특정 값을 돌려주는데 이를 return 값이라 한다.

위 exit_program 함수에서 return 값을 정의하지 않아도 print(result)로 None이 출력되는 것을 볼 수 있다.

즉, 기본적으로 None을 return 한다.

 

def exit_program(sys_stat):
    # 프로그램 정리
    # ...

    if sys_stat == 3:
        print("프로그램을 종료할 수 없습니다")
        return -1
    print("프로그램이 3분 후 종료됩니다")


result = exit_program(system_status)
if result == -1:
    # ...
    # ...
    print(result)

 

위와 같이 함수 return 값을 이용하면 함수를 더 유용하게 사용할 수 있다.

return value는 integer외에도 string, list, document 등 여러 자료형을 반환할 수 있으며, 아래와 같이 여러개를 return 하는 것도 가능하다.

 

def exit_program(sys_stat):
    # 프로그램 정리
    # code

    return a, b, c


a, b, c = exit_program(system_status)

 

728x90