Black - python's code style formatter

LHW·2023년 9월 3일
0
post-thumbnail

PEP8

파이썬의 코드 스타일 가이드이다. 통일되고 클린한 코드를 작성하기 위한 규약이며 예시로는 아래와 같은 사항들이 있다.

  • 들여쓰기는 4개의 공백을 기준으로 작성한다.
  • 한 줄당 코드의 최대 길이는 79자로 제한한다.
  • import 단은 별도로 한 곳에 모아서 작성한다.
    • 단, 한 줄에 여러개의 라이브러리를 import 하지 않는다.
    • ex. import os, sys ➡️ 잘못된 방식
    • 하지만 한 라이브러리 내부에서 여러개의 클래스나 메소드를 가져오는 경우는 상관없다.
    • ex. from keras.layers import Dense, Conv2D

이러한 규약들을 제외하고도 엄청나게 많은 규약들이 존재한다. 물론 이를 모두 외워서 필요할 때 마다 몇 개의 규약을 이용해서 작성하는 사람들도 존재하겠지만, 매번 이러한 규칙들을 꾸준히 지키기는 어려운 일이다. 이를 편리하게 해주는 것이 Black이다.

🎆Black🎆

Black은 일관성, 일반성, 가독성 및 git diff감소를 목표로 한다고 공식문서에서 이야기하고 있다. 이를 사용하기 위해서는 파이썬의 버전이 3.7이상이어야 하며, black을 설치해야 한다.

!pip install black

만약 주피터 파일에도 적용하고자 한다면 아래와 같이 설치한다.

!pip install "black[jupyter]"

사용법

일반적인 사용법은 아래와 같다.

black my_python_file.py

실행시키면 아래와 같은 문구가 출력되며 원 파일의 code style이 black code style로 변경되어 저장된다.

reformatted my_python_file.py

All done! ✨ 🍰 ✨
1 file reformatted.

하지만 때로는 어떤 부분이 미리 변경되는지만 확인하고 싶을 때가 있을 것이고, 여러 옵션들을 바꾸고 싶은 경우도 있을 것이다.

Options

[-l or --line-length]

  • 한 줄에 최대로 작성 가능한 문자 수이다. default값은 88이다.

[--diff]

  • 어떤 부분들이 바뀌는지 파일을 저장하지 않고 terminal창에 보여준다.
  • --color옵션과 함께 사용하며, 해당 옵션을 사용하게 되면 어떤 부분들이 바뀌는지 색깔을 통해서 알려준다. 아래는 diff와 color를 동시에 적용시켜 얻은 결과의 일부이다.

위 변경점에 적용된 규약들은 아래와 같다.

구분적용된 규약
ModelCheckpoint callback함수 정의한 줄의 글자 수는 79자를 넘지 않는다.
Tensorboard callback함수 정의keyword arguments들을 작성할 때 =는 붙여서 작성한다.
모델 학습 부분1keyword argument를 작성할 때 =는 붙여서 작성한다.
모델 학습 부분2argument 이후 부분과의 분리를 위해서는 argument들의 들여쓰기가 모두 일치해야 한다.

적용 방향

작게는 팀 프로젝트 하면서 팀원들 간에 코드 스타일을 통합시켜 서로 파일을 공유하거나 할 때 편리하게 볼 수 있다는 정도가 될 수 있겠고, 더 나아가 회사에서는 사내 코드 작성 규약을 여러 옵션을 적용시켜 해당 회사만의 규약을 정해놓고 사용할 수도 있을 것 같다는 생각이 들었다.

더 자세한 사항은 https://zerosheepmoo.github.io/pep8-in-korean/doc/introduction.html 를 확인하자.

profile
하루가 다르게 성장하기

0개의 댓글