프로그래밍Python 팀 리드

Python에서의 명명 규칙(PEP8 등)에 대해 설명해주세요. 이러한 규칙을 준수하지 않을 경우 코드 작업에 어떤 영향을 미치나요? PEP8을 위반했을 때 프로젝트에서의 실제 결과를 예로 들어주세요.

Hintsage AI 어시스턴트로 면접 통과

답변.

Python에는 일련의 코드 스타일 규칙이 있으며, 그 중 가장 중요한 것은 PEP8입니다:

  • 변수/함수 이름: lower_case_with_underscores
  • 클래스 이름: CapitalizedCamelCase
  • 상수: ALL_CAPS
  • 행 길이: 79자 이하
  • 들여쓰기: 4칸(space) (탭 금지!)
  • 연산자 주위의 공백: a = b + c
  • 임포트: 각 임포트는 별도의 줄이며, 먼저 표준 라이브러리, 그 다음 제3자 라이브러리, 마지막으로 로컬 라이브러리 순서로 나열함

PEP8을 준수하면 팀 작업이 용이해지고 가독성이 향상되며, 진입 장벽이 낮아지고, 테스트 자동화가 간편해지는 등의 장점이 있습니다.


함정 질문.

PEP8에서는 단일 문자 변수 이름을 사용하지 않도록 권장합니다. 그러나 list comprehensions나 lambda에서 짧은 이름을 사용할 수 있나요? 왜 그런가요?

답변: 기본적으로 짧은 반복의 경우(예: 변수 마커로서 x, i, j와 같은 list comprehensions에서) 짧은 표현을 복잡하게 만들지 않기 위해 단일 문자 이름 사용이 허용됩니다. 복잡한 표현에는 의미 있는 이름을 주는 것이 좋습니다.

예시:

# 허용됨: squares = [x**2 for x in numbers] # 더 나은 예: squares = [number**2 for number in numbers]

주제의 미묘한 점을 알지 못해 발생한 실제 오류 사례.


사례 1

은행 프로젝트에서 일부 기능과 매개변수가 서로 다른 규칙(CamelCase, snake_case, 하이픈 사용)으로 명명된 문제가 발생했습니다. 팀의 새로운 구성원이 어디에서 이름이 사용되는지 혼동하여, 충돌 수정 및 변수 이름 변경에 거의 2주가 소요되었습니다.


사례 2

데이터 엔지니어링 프로젝트에서 들여쓰기가 지켜지지 않고, 탭과 공백이 혼합되었습니다. 이로 인해 다양한 개발 환경에서 SyntaxError가 발생하였고, 일부 개발자는 불필요한 공백 찾기에 몇 시간을 소비해야 했습니다.


사례 3

대규모 교육 포털에서는 짧은 변수 이름과 긴 변수 이름이 혼합되었습니다. 예를 들어 로그를 처리하는 함수는 l()로 명명하고, 로그인 처리기는 long으로 명명하여 많은 IDE에서 탐색에 많은 시간이 소요되었고, 리스트에서 요소 l과의 함수 사용에 혼란을 초래했습니다.