함수 본문을 이루는 하나 이상의 유효한 파이썬 문장. 같은 들여쓰기 레벨(보통 4칸) 유지.
함수에서 값을 반환하는 선택적 return 문.
함수 예제
def greet(name):
"""이 함수는 매개변수로 전달된 사람에게 인사합니다."""
print("Hello, " + name + ". Good morning!")
파이썬에서 함수 호출하는 법
함수를 정의하면 다른 함수, 프로그램, 파이썬 프롬프트에서 호출할 수 있습니다. 함수 호출은 함수 이름에 적절한 매개변수를 붙여 쓰면 됩니다.
>>> greet('Paul')
Hello, Paul. Good morning!
함수 정의와 함께 위 코드를 파이썬 프로그램에서 실행해 출력을 확인하세요.
def greet(name):
"""이 함수는 매개변수로 전달된 사람에게 인사합니다."""
print("Hello, " + name + ". Good morning!")
greet('Paul')
참고: 파이썬에서 함수 정의는 항상 함수 호출보다 앞에 있어야 합니다. 그렇지 않으면 에러 발생. 예:
# 함수 호출
greet('Paul')
# 함수 정의
def greet(name):
"""이 함수는 매개변수로 전달된 사람에게 인사합니다."""
print("Hello, " + name + ". Good morning!")
# Error: name 'greet' is not defined
독스트링(Docstrings)
함수 헤더 뒤 첫 문자열을 독스트링이라 하며 documentation string의 줄임말입니다. 함수가 무엇을 하는지 간단히 설명하는 데 쓰입니다.
선택 사항이지만 문서화는 좋은 프로그래밍 습관입니다. 지난주 저녁 메뉴를 기억 못 한다면 항상 코드에 문서를 남기세요.
위 예제에서 함수 헤더 바로 아래 독스트링이 있습니다. 독스트링이 여러 줄로 늘어나게 삼중 따옴표를 주로 사용합니다. 이 문자열은 함수의 __doc__ 속성으로 접근 가능합니다.
예를 들어:
파이썬 셸에서 다음을 실행해 출력 확인:
>>> print(greet.__doc__)
이 함수는 매개변수로 전달된 사람에게 인사합니다.
독스트링에 대해 더 알고 싶으면 Python Docstrings를 방문하세요.
return 문
return 문은 함수를 종료하고 호출한 곳으로 돌아갑니다.
return 문법
return [expression_list]
이 문장은 평가되어 반환될 표현식을 포함할 수 있습니다. 표현식이 없거나 return 문 자체가 함수 안에 없으면 함수는 None 객체를 반환합니다.
예:
>>> print(greet("May"))
Hello, May. Good morning!
None
여기서 None은 반환된 값인데, greet()가 이름을 직접 출력하고 return 문을 쓰지 않았기 때문입니다.
return 예제
def absolute_value(num):
"""이 함수는 입력된 숫자의 절댓값을 반환합니다."""
if num >= 0:
return num
else:
return -num
print(absolute_value(2))
print(absolute_value(-4))
출력
2
4
파이썬에서 함수 작동 원리
변수의 스코프와 수명
변수의 스코프는 프로그램에서 변수가 인식되는 부분입니다. 함수 내부에서 정의된 매개변수와 변수는 외부에서 보이지 않으므로 지역 스코프를 가집니다.
변수의 수명은 메모리에 존재하는 기간입니다. 함수 내 변수 수명은 함수가 실행되는 동안입니다.
함수에서 반환하면 변수들은 파괴됩니다. 따라서 함수는 이전 호출의 변수 값을 기억하지 못합니다.
함수 내 변수 스코프를 보여주는 예제:
def my_func():
x = 10
print("Value inside function:", x)
x = 20
my_func()
print("Value outside function:", x)
출력
Value inside function: 10
Value outside function: 20
여기서 x 초깃값은 20. 함수 my_func()가 x를 10으로 바꿨지만 함수 밖 값에는 영향 없음.
함수 안 x와 밖 x는 이름이 같아도 서로 다른 변수(서로 다른 스코프)입니다.
반면 함수 밖 변수는 내부에서 보입니다. 전역 스코프를 가집니다.
함수 내부에서 이 값들을 읽을 수는 있지만 변경(쓰기)은 못 합니다. 함수 밖 변수 값을 수정하려면 global 키워드로 전역 변수 선언 필요.
함수 유형
기본적으로 함수는 다음 두 유형으로 나눌 수 있습니다:
내장 함수(Built-in functions) - 파이썬에 기본 탑재된 함수.
사용자 정의 함수(User-defined functions) - 사용자가 직접 정의한 함수.