8.1 return
문
Python에서 return
문은 함수에서 아주 중요한 역할을 해.
이걸로 함수가 값을 반환할 수 있거든. 이걸 잘 이해하면 소프트웨어 개발을 더 효율적으로 할 수 있어.
return
문은 함수 실행을 끝내고 그 결과를 호출 코드에 "돌려줘".
함수가 결과를 내서 그 결과가 계속 사용돼야 할 때 return
을 써.
값 반환하기
함수는 숫자, 문자열, 객체, 심지어 다른 함수나 None
까지 모든 데이터 타입을 반환할 수 있어. 예를 볼까:
def sum(a, b):
return a + b
result = sum(5, 3)
print(result) # 출력 8
덧셈 결과 a + b
는 변수 result
에 할당될 수 있어.
다중 값 반환하기
Python은 튜플을 사용해서 함수에서 여러 값을 반환하는 것도 가능해:
def get_user():
name = "이반"
age = 25
return name, age
user_name, user_age = get_user()
print(user_name, user_age) # 출력 이반 25
함수 종료를 위한 return
사용하기
return
문은 함수 내에서 즉시 종료하기 위해서도 사용할 수 있어. 이건 함수 내부에 있는 루프나 조건문에도 적용돼:
def check_password(pswd):
if len(pswd) < 8:
return "너무 짧은 비밀번호야"
return "비밀번호가 수락됐어"
return
없이 쓰기
return
이 값 없이 사용되거나 생략되면, 함수는 None
을 반환해:
def print_message(text):
print(text)
return
result = print_message("안녕")
print(result) # 출력 None
return
문은 Python에서 엄청 강력한 도구야. 프로그램의 흐름 제어를 유연하게 해줘.
이걸로 함수가 단지 값을 반환할 뿐만 아니라 실행 로직을 제어할 수 있어서 코드가 더 깔끔하고 이해하기 쉬워져.
8.2 pass
문
Python에는 pass
라는 특별한 문이 있어, 이건 아무것도 하지 않아.
pass
문은 코드 블록 안에 내용이 필요하지만 아직 기능적으로 정의되지 않은 곳에 사용돼 (어떤 코드가 필요하긴 한데 아직 생각이 안 날 때).
이건 특히 큰 프로젝트에서 유용한데, 그냥 프로그램 구조를 잡아놓고 아무것도 수행하지 않게 하고 싶을 때 좋거든.
pass
사용 예제를 보자.
함수 정의에서:
def my_function():
pass
여기서 pass
는 아직 구현이 없는 함수를 정의하는 데 사용돼.
루프와 조건문에서:
for item in my_list:
pass
루프를 만들어야 하지만 그 안에서 아무 작업도 할 필요가 없을 때.
클래스에서:
메서드나 속성 없이 클래스를 정의해서 향후 사용을 위한 클래스 이름과 구조를 예약해 놓을 때.
pass
문은 프로그램의 구조가 명확하지만 각각의 컴포넌트의 구현 세부사항이 아직 결정되지 않았을 때 개발과 테스트에서 자주 사용돼.
이걸로 프로그래머는 코드 구조를 정리하고 기능을 점진적으로 추가할 수 있어서 애플리케이션을 전체적으로 중단하지 않고 작업할 수 있어.
8.3 함수 반환하기
Python에서 함수가 다른 함수를 반환할 수 있는 기능은 아주 강력한 도구야. 이건 클로저*와 일급 함수 지원 덕분이야. 이 언어의 특징 덕에 데코레이터*나 펑션 팩토리* 같은 개념을 사용해서 유연하고 표현력 있는 프로그램을 개발할 수 있어.
Python에서 함수는 객체라서, 변수에 할당될 수 있고, 다른 함수에 인수로 전달되거나 반환될 수도 있어. 이 기능 덕에 함수는 모듈화된 코드와 쉽게 테스트 가능한 코드를 만드는 데 아주 강력한 도구가 돼.
예를 들어, 제곱과 세제곱 등을 할 수 있는 함수를 생성하는 함수를 만들어 보자. 이런 코드야:
def power(exponent):
def inner(base):
return base ** exponent
return inner
square = power(2)
print(square(3)) # 출력 9
cube = power(3)
print(cube(3)) # 출력 27
여기서 주목할 점은 — power
함수가
inner
함수를 호출하지 않는다는 거야. 대신에, 함수
power
안에서 inner
함수를
base
매개변수로 선언해. 그런데 inner
함수는 단순히 선언되는 게 아니라, 내부에서
exponent
매개변수를 사용하지.
GO TO FULL VERSION