目次
1. Python에서 def
란 무엇인가
Python에서의def
키워드는 함수를 정의하는 데 사용됩니다. 함수는 코드의 재사용성을 높이고, 프로그램을 더 정돈된 형태로 만들기 위한 기본적인 구조입니다。def
를 사용하면 특정 작업을 묶은 블록을 만들어 반복해서 사용할 수 있습니다. 이를 통해 코드의 가독성이 향상되고 버그 발생률을 줄일 수 있습니다。def
키워드의 기본 구문
기본적인 구문은 다음과 같습니다:def 함수명(인수1, 인수2, ...):
처리
return 반환값
def
뒤에 함수명을 작성하고, 괄호 안에 필요한 인수를 지정합니다. 그다음 콜론 뒤의 들여쓰기된 블록에 처리 내용을 작성합니다. 필요에 따라 return
문으로 값을 반환할 수 있습니다。2. def
의 기본 구문과 사용 방법
기본적인 함수 정의 방법
def
키워드를 사용해 함수를 정의할 때에는 함수 이름, 매개변수 목록, 그리고 실행 내용을 작성합니다. 예를 들어, 아래 코드는 “Hello, World!”를 출력하는 기본적인 함수의 예입니다。def say_hello():
print("Hello, World!")
이 함수는 say_hello()
를 호출하면 콘솔에 “Hello, World!”를 표시합니다。들여쓰기의 중요성
Python에서는 들여쓰기가 매우 중요합니다。 함수 내부에 작성되는 모든 코드는 동일한 수준의 들여쓰기로 작성되어야 합니다。 들여쓰기로 코드의 계층과 블록을 구분하므로, 들여쓰기를 잘못하면 오류의 원인이 됩니다。함수 호출
정의한 함수는 함수 이름에 괄호를 붙여 호출합니다。 인수가 있는 경우 괄호 안에 해당 인수를 지정합니다。say_hello()

3. 함수의 인자와 기본값
위치 인자와 키워드 인자
함수는 인자를 받을 수 있으며, 인자는 위치 인자와 키워드 인자로 나뉩니다. 위치 인자는 순서대로 전달되는 것으로, 함수 호출 시 지정한 순서대로 처리됩니다. 키워드 인자는 이름을 지정하여 전달하는 인자로, 함수 호출 시 순서와 관계없이 전달할 수 있습니다。def greet(name, greeting="Hello"):
print(f"{greeting}, {name}!")
위의 함수에서는、greeting
에 기본값을 설정해 두었으며、greet("Alice")
로 호출하면 “Hello, Alice!”가 출력됩니다。가변 인자
때로는, 함수가 가변 개수의 인자를 받아야 할 때가 있습니다。Python에서는、*args
와**kwargs
를 사용해 가변 인자를 전달할 수 있습니다。def print_args(*args):
for arg in args:
print(arg)
print_args(1, 2, 3)
이 예에서는、*args
가 튜플로 모든 인자를 받습니다。4. return
문으로 값을 반환하기
return
문 사용법
함수에서 계산한 값을 반환하고 싶다면 return
문을 사용합니다. return
문이 없으면 함수는 기본적으로 None
을 반환합니다。def add(a, b):
return a + b
result = add(3, 4)
print(result) # 7
이 함수add
는 두 수의 합을 반환합니다. return
문을 통해 함수에서 값을 반환하고 그것을 변수에 저장할 수 있습니다。여러 값을 반환하기
Python에서는 함수가 여러 값을 반환할 수도 있습니다. 쉼표로 구분해 반환하면 튜플로 묶어 반환할 수 있습니다。def swap(a, b):
return b, a
x, y = swap(1, 2)
print(x, y) # 2 1

5. 변수의 스코프와 수명
로컬 변수와 전역 변수
함수 안에서 정의된 변수는 로컬 변수라고 하며, 그 함수 안에서만 사용할 수 있습니다. 함수 밖에서 정의된 변수는 전역 변수라고 하며, 프로그램 전체에서 사용할 수 있습니다.x = "global"
def func():
x = "local"
print(x)
func() # local
print(x) # global
이 예에서는 함수 func
안에서 정의된 x
는 로컬 변수이며, 함수의 외부에는 영향을 미치지 않습니다。global
키워드
함수 내부에서 전역 변수를 변경하고 싶다면 global
키워드를 사용합니다.x = "global"
def change_global():
global x
x = "changed"
change_global()
print(x) # changed
6. 실用적인 예와 사용 방법
함수를 사용한 프로그램 효율화
함수를 사용하면 프로그램의 효율을 크게 향상시킬 수 있습니다. 예를 들어, 반복해서 수행하는 계산이나 데이터 처리를 함수로 묶으면 코드 중복을 피할 수 있습니다。def calculate_area(radius):
return 3.14 * radius * radius
area1 = calculate_area(5)
area2 = calculate_area(10)
이 예에서는 원의 면적을 계산하는 함수calculate_area
를 정의하고, 필요에 따라 얼마든지 사용할 수 있습니다。함수의 활용 예
또 다른 예로, 텍스트의 서식을 지정하는 함수를 작성합니다。def format_text(text, alignment="left"):
if alignment == "left":
return text.ljust(20)
elif alignment == "right":
return text.rjust(20)
elif alignment == "center":
return text.center(20)
print(format_text("Hello", "center"))
이 함수는 텍스트를 왼쪽 정렬, 오른쪽 정렬, 가운데 정렬 중 하나로 서식을 지정합니다。
7. 고급 함수의 개념
중첩 함수
Python에서는 함수 안에 다른 함수를 정의할 수 있습니다. 이를 중첩 함수라고 합니다. 중첩 함수는 바깥 함수 내부에서만 접근할 수 있습니다。def outer():
def inner():
print("This is the inner function")
inner()
익명 함수(Lambda)
lambda
키워드를 사용하면, 이름이 없는 함수(익명 함수)를 만들 수 있습니다. 이는 한 번만 사용하는 간단한 함수를 만들 때 유용합니다。square = lambda x: x * x
print(square(5)) # 25
데코레이터
데코레이터는 기존 함수를 수정하지 않고 그 기능을 확장하는 방법입니다. 함수를 인수로 받고, 새로운 함수를 반환하는 함수로 정의됩니다。def decorator(func):
def wrapper():
print("Before the function")
func()
print("After the function")
return wrapper
@decorator
def say_hello():
print("Hello!")
say_hello()
8. 정리
이 글에서는 Python의def
키워드를 사용한 함수 정의 방법부터 인수, 반환값, 스코프, 더 나아가 고급 기능까지 폭넓게 설명했습니다. 함수를 활용하면 프로그램을 보다 효율적이고 체계적으로 구성할 수 있습니다. 이 글을 참고하여 다양한 함수를 만들어 Python 프로그래밍 실력을 향상시키세요.9. 자주 묻는 질문(FAQs)
return
과print
의 차이는 무엇인가요?
return
과print
는 비슷해 보이지만, 서로 다른 역할을 합니다。return
은 함수에서 값을 반환하여 그 값을 다른 부분에서 사용할 수 있게 해 줍니다。예를 들어 계산 결과를 반환하고 그것을 다른 변수에 대입할 때 사용합니다。반면,print
는 함수의 출력을 콘솔에 표시할 뿐이며, 프로그램의 다른 부분에서 그 값을 사용할 수는 없습니다。def add(a, b):
return a + b
result = add(3, 4) # result에는 7이 저장된다
print(result) # 7
def display_message():
print("Hello, World!")
display_message() # Hello, World! 라고 콘솔에 출력되지만 값은 반환되지 않는다
함수를 중첩해서 쓰는 장점은 무엇인가요?
중첩된 함수를 사용하면 외부에서 접근할 수 없는 로컬 함수를 만들 수 있어 코드의 캡슐화와 재사용에 도움이 됩니다。또한,바깥 함수의 스코프에 접근할 수 있으므로 특정 처리에 한정된 함수를 만드는 데 유용합니다。가변 길이 인수는 언제 사용해야 하나요?
함수에 전달할 인수의 개수가 정해져 있지 않을 때 가변 길이 인수를 사용합니다。예를 들어 임의 개수의 숫자 합계를 계산하는 함수처럼 입력 개수가 변동하는 상황에 대응하기 위해 사용합니다。def add_all(*args):
return sum(args)
result = add_all(1, 2, 3, 4, 5) # 15
함수의 재귀 호출은 어떻게 사용하나요?
재귀 함수란 함수가 자기 자신을 호출하는 것을 말합니다。이는 특정 문제를 간결하게 해결하는 데 사용되지만, 신중히 사용하지 않으면 스택 오버플로의 원인이 될 수 있습니다。예를 들어 팩토리얼 계산 등에 활용됩니다。def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
result = factorial(5) # 120