본문 바로가기
Study/Python

[Python] Style Guide

by ngool 2024. 7. 15.

본 포스트에서는 파이썬을 실제 업무에 사용할 때, 일반적으로 지키는 암묵적인 코딩 룰에 대해 이야기해보려 합니다.

이러한 룰을 스타일 가이드라고 말하는데요, 크게 5가지를 들 수 있겠습니다.

  • 변수명은 무엇을 위한 변수인지 직관적인 이름을 가져야 함
  • 공백(spaces) 4칸을 사용하여 코드 블록을 들여쓰기
  • 한 줄의 길이는 79자로 제한하며, 길어질 경우 줄 바꿈을 사용
  • 문자와 밑줄(_)을 사용하여 함수, 변수, 속성의 이름을 작성
  • 함수 정의나 클래스 정의 등의 블록 사이에는 빈 줄을 추가

변수명은 무엇을 위한 변수인지 직관적인 이름을 가져야 함

a = 3000

 

어떤 사람의 코드를 읽었는데, 저런 변수가 있다고 해봅시다.

a가 어떤 역할을 하는 변수인지 유추할 수 있을까요? 아마 코드를 다 읽지 않으면 알 수 없을 것입니다.

 

이런 문제를 사전에 방지하기 위해 변수명은 직관적으로 설정해야 합니다.

apple_price = 3000

 

위와 같이 설정하면 코드를 전부 읽어 보지 않아도 해당 변수가 사과의 가격임을 확실히 알 수 있게 됩니다.

그러면 추후 코드를 읽을 때도 이해하기 더 쉽겠죠?


공백(spaces) 4칸을 사용하여 코드 블록을 들여쓰기

for i in range(10):
  print('|', end='')
  for j in range(10):
    print('*', end='')
  if j == 9:
    print('|')

 

위 코드를 봅시다. 어떤가요?

코드를 이해하기 위해서는 들여쓰기를 잘 봐야하는데, 들여쓰기가 2칸밖에 되지 않아 가독성이 떨어집니다.

 

하지만 공백을 4칸으로 하면 어떨까요?

for i in range(10):
    print('|', end='')
    for j in range(10):
        print('*', end='')
    if j == 9:
        print('|')

 

훨씬 더 들여쓰기가 잘 보입니다. 코드 가독성이 훨씬 좋아진 것을 확인할 수 있습니다.


줄의 길이는 79자로 제한하며, 길어질 경우 줄 바꿈을 사용

long_string = "This is a very long sting that exceeds the 79 character limit. To make it more readable, it is split into multiple lines."

 

위 코드는 79자가 넘는 긴 길이의 코드입니다.

너무 길다보니, 확인하고 싶을 때마다 스크롤을 옆으로 이동시켜야 하는 불편함이 생깁니다.

 

이를 방지하기 위해 아래와 같은 방식을 사용할 수 있습니다. 

long_string = "This is a very long sting that exceeds the 79 character limit. " \
              "To make it more readable, it is split into multiple lines."

 

백슬래쉬(\)를 이용하면 한 변수에 문자열을 줄 바꿈으로 이어서 넣을 수 있습니다.

이렇게 하면 스크롤을 움직이지 않고도 전체 내용을 확인할 수 있습니다.


자와 밑줄(_)을 사용하여 함수, 변수, 속성의 이름을 작성

# 스네이크 표기법 (snake_case)
# 밑줄 (_)로 단어를 구분한다.
this_is_var = 'Hello, World!'

# 카멜 표기법 (camelCase)
# 첫 단어는 소문자로, 뒤 단어는 대문자로 구분한다.
thisIsVar = 'Hello, World!'

# 파스칼 표기법 (PascalCase)
# 카멜 표기법을 따르되, 첫 단어도 대문자로 사용한다.
ThisIsVar = 'Hello, World!'

 

일반적으로 사용되는 표기법은 위 3가지가 있습니다.

3가지 방법 모두 사용해도 무방하지만, 파이썬에서는 스네이크 표기법을 사용하는 것이 더 일반적이라고 합니다.

'_'를 사용하면 더 눈에 잘 보이고, 타이핑하기도 쉽기 때문인 것 같습니다.


수 정의나 클래스 정의 등의 블록 사이에는 빈 줄을 추가

def add(a, b):
    result = a + b
    return result
def multiply(a, b):
    result = a * b
    return result

 

위 코드처럼 두 함수를 붙여서 정의하면 가독성이 떨어집니다.

두 함수가 독립적임을 명시하기 위해서는 두 함수 블록 사이에 빈 줄을 추가해야겠죠?

 

def add(a, b):
    result = a + b
    return result
    
def multiply(a, b):
    result = a * b
    return result

 

이렇게 작성하면 깔끔하게 두 함수를 명시할 수 있습니다.

함수 뿐만 아니라 클래스 정의도 마찬가지로 빈 블록을 추가해주면 좋겠죠?