3. 함수와 클래스의 기본 구조
파이썬 코드에서 여러 줄의 문장을 하나로 묶어 필요할 때마다 재사용하고 싶다면 함수(Function)와 클래스(Class) 구조를 사용해야 합니다.
이러한 구조들이 파이썬 스크립트 실행 시 메모리에 적재(Loading)되면, 각 모듈의 네임스페이스에 이름표를 부여받고 등록되어 언제든 호출할 수 있는 상태가 됩니다.
3.1 함수(Function) 선언과 반환
파이썬에서 함수를 정의할 때는 def 키워드를 사용합니다. 선언된 함수는 그 자체로 파이썬 내장 function 클래스의 독립적인 인스턴스 객체로 취급됩니다.
기본 구조와 반환(return)
함수를 설계할 때는 필요에 따라 데이터를 받아올 매개변수(Parameter)를 괄호 안에 지정할 수 있고, 실행이 끝난 후 값을 돌려보내기 위해 return 문을 사용합니다.
def calculate_area(width, height):
"""
너비와 소문자를 받아 직사각형의 넓이를 계산합니다.
"""
area = width * height
return area
# 함수 호출과 인자(Argument) 전달
result = calculate_area(10, 5)
print(result) # 출력: 50
[!NOTE] 파이썬에서는 명시적으로
return문을 작성하지 않아도, 함수 실행이 종료되는 시점에 시스템이 알아서None객체를 자동으로 반환해 줍니다. 따라서 모든 파이썬 함수는 반드시 어떤 값이든 반환한다는 특징이 있습니다.
3.2 클래스(Class) 선언
객체 지향 프로그래밍(OOP)의 근간이 되는 클래스는 class 키워드를 사용하여 정의합니다. 클래스가 선언되는 순간 하나의 거대한 설계도이자 객체가 생성되며, 이를 이용해 수많은 인스턴스(Instance)들을 찍어낼 수 있습니다.
# 사용자 정보를 다루기 위한 빈 클래스 정의
class UserAccount:
pass
# 인스턴스 생성
user_1 = UserAccount()
# 어떤 클래스에서 파생된 인스턴스인지 검사
print(type(user_1))
# 출력: <class '__main__.UserAccount'>
추후 다루게 될 클래스 파트에서 이 빈 설계도 안에 속성(변수)과 기능(메서드)을 채워넣는 방법을 상세히 배웁니다.
3.3 형태만 유지하는 pass 문
위에 등장한 예제 코드들에서 pass 라는 독특한 예약어를 보셨을 것입니다. 파이썬 문법상 함수, 클래스, 혹은 조건문 블록 내부에는 들여쓰기와 함께 최소 1줄 이상의 문장이 강제적으로 존재해야 합니다.
만약 당장 뼈대만 잡아두고 세부 로직의 구현은 나중으로 미루고 싶을 때, 빈 공간으로 두면 IndentationError가 발생하므로 “아무것도 하지 않고 문법 구멍만 메워라” 라는 뜻으로 pass 를 적어 넣습니다.
# 로직 구현을 나중으로 미룬 함수 스케치
def prepare_database_connection():
pass
# 조건문 구조만 미리 잡아놓은 경우
if 10 > 5:
pass
else:
print("수학적 오류입니다.")
pass 구문을 거치더라도 프로그램이 에러를 일으키거나 멈추지 않고 자연스럽게 다음 라인으로 흘러갑니다.