HOWTO · Python

Python의 함수, 클래스, 상수 및 변수에 대한 명명 규칙

PEP 8을 기반으로 한 명확한 예제와 함께 Python의 함수, 클래스, 상수 및 변수에 대한 이름 규칙을 배워 보세요.

이 페이지의 내용

Python 이름 규칙을 따르면 코드를 더 읽기 쉽고 유지 관리하기 좋게 만들 수 있습니다. PEP 8은 Python 스타일 가이드이며, 여기에 담긴 규칙은 언어가 강제하는 규칙이 아니라 지침입니다. 일관된 출발점으로 활용하되, 프로젝트에 이미 정해진 스타일이 있다면 그 방식을 따르세요. 지침의 출처는 PEP 8 이름 규칙에서 확인할 수 있습니다.

함수 이름 규칙

함수 이름은 소문자 단어를 밑줄로 연결해 작성합니다. 이 스타일을 snake_case(스네이크 케이스)라고 합니다. 예를 들어 calculate_area는 함수가 하는 일을 나타내며 한눈에 읽기 쉽습니다. 함수 이름만 보고도 어떤 작업을 하는지 알 수 있도록 지으세요.

예를 들어 다음 함수는 직사각형의 넓이를 계산해 표시합니다.

def calculate_area(length, width):
    return length * width

area = calculate_area(5, 3)
print(area)

출력:

15

함수 이름은 동사로 시작하고, 매개변수 이름은 함수가 받는 값을 설명합니다. 호출할 때 길이 5와 너비 3을 전달하므로 반환되는 넓이는 15입니다.

Python 식별자는 대소문자를 구분하므로 calculate_area와 Calculate_Area는 서로 다른 이름입니다. 이름에는 문자, 숫자, 밑줄을 사용할 수 있지만 숫자로 시작할 수는 없습니다. 함수 본문이나 주변 코드만으로 이미 알 수 있는 세부 사항을 이름에 덧붙이기보다 읽기 쉽게 유지하세요. _parse_record처럼 앞에 밑줄 하나를 붙이면 내부용으로 쓰려는 이름임을 나타냅니다. 그렇다고 이름에 접근할 수 없게 되거나 비공개가 되는 것은 아닙니다. 프로젝트의 기존 규칙이 다르면 그 규칙을 따르세요.

클래스 이름 규칙

클래스 이름에는 CapWords를 사용합니다. 각 단어의 첫 글자는 대문자로 쓰고 단어 사이에 밑줄을 넣지 않습니다. 이 스타일은 흔히 PascalCase라고도 합니다. 따라서 Car와 같은 클래스 이름은 함수나 변수 이름과 구별됩니다.

class Car:
    def __init__(self, make, model):
        self.make = make
        self.model = model

my_car = Car("Toyota", "Corolla")
print(my_car.make, my_car.model)

출력:

Toyota Corolla

여기서 Car는 클래스 이름이고, my_car는 변수에 사용하는 소문자와 밑줄 조합을 따릅니다. 초기화 메서드는 전달받은 제조사와 모델을 새 객체에 저장합니다.

상수 이름 규칙

상수 이름은 보통 모듈 수준에서 대문자 단어를 밑줄로 연결해 작성합니다. 예를 들어 MAX_RETRIES는 값이 바뀌지 않도록 의도했음을 나타냅니다. 대문자 표기는 관례일 뿐입니다. 이름이 대문자라고 Python이 값을 불변으로 만들지는 않으므로, 관례와 실천에 따라 재할당하지 않도록 하세요.

PI = 3.14159

def calculate_circle_area(radius):
    return PI * (radius ** 2)

area = calculate_circle_area(5)
print(area)

출력:

78.53975

상수 이름을 보면 그 값의 용도를 알 수 있으며, 함수는 이를 사용해 원의 넓이를 계산합니다.

변수 이름 규칙

변수 이름도 함수 이름처럼 소문자 단어를 밑줄로 연결해 작성합니다. x처럼 막연한 이름보다 user_age처럼 의미를 설명하는 이름을 선택하세요. 어느 정도로 구체적으로 지을지는 주변 코드가 제공하는 맥락에 따라 달라집니다.

user_age = 30
def display_age(age):
    print(f"The user is {age} years old.")

display_age(user_age)

출력:

The user is 30 years old.

user_age는 저장된 값을 설명하고, 짧은 함수에서 매개변수로 쓰이는 age도 의미가 분명합니다. 이름을 일관되게 사용하면 프로그램에서 값이 어떻게 전달되는지 이해하기 쉽습니다. Python은 이러한 이름 스타일을 강제하지 않으므로, 규칙을 일관되게 적용하고 프로젝트의 스타일에 맞추세요.