이번 게시물에선 python의 강력한 code formatter인 black을 vscode에서 사용해보도록 하겠습니다.
기업의 개발팀에서는 큰 규모의 코드를 다루다 보니, 코드 통일 및 재사용을 위해 code convention을 진행하고 code style이나 format를 설정합니다. black은 파이썬 코드 스타일인 pep8에 따라 코드를 자동으로 포맷해줍니다. 따라서 일일이 손으로 형식을 맞춰줄 필요가 없고, 생각보다 직관적으로 코드를 변환해줍니다.
0. vscode에 python Extension 설치하기
이 단계는 vs code를 사용하는 python 개발자라면 필수이기 때문에 생략하겠습니다.
1. 현재 작업 환경에 black 패키지 설치하기
우선 pip를 통해 black을 설치합니다. 호스트 환경이나 conda, python virtualenv 등 어디서든 설치하면 됩니다.
# pip로 설치
pip3 install black
# conda로 설치
conda install -c conda-forge black
2. vscode에서 formatting provider를 설정합니다.
vscode setting에 들어가서 formatting provider를 검색하면 아래 메뉴가 나옵니다. 기본값으로 autopep8이 설정되어있는데 이를 black으로 바꿔줍시다.
3. vs code에서 settings.json을 편집합니다.
사실 이제 black을 설치하기만해도 vs code가 알아서 실행할 수도 있지만, 추가 설정을 주려면 settings.json에 다음 라인을 추가해줍니다.
{
...
"python.formatting.provider": "black",
"python.formatting.blackArgs": ["--line-length", "100"], # 최대 코드길이를 100으로 설정합니다.
"editor.formatOnSave": true, # 저장할 때마다 black을 적용합니다.
...
}
4. black이 적용되는지 확인합니다.
확실히 띄어쓰기나 줄바꿈에서 큰 변화가 생깁니다.
# 사용 전
from sys import stdin
def climb(num):
score = [stairs[0]]
if num == 1:
return score[0]
score.append(score[0]+stairs[1])
if num == 2:
return score[-1]
score.append(max(stairs[2]+score[0], stairs[2]+stairs[1]))
for step in range(3,num):
score.append(max(stairs[step] + stairs[step-1] + score[step-3],stairs[step] + score[step-2]))
return score[-1]
num_stairs = int(stdin.readline())
stairs = [int(stdin.readline()) for _ in range(num_stairs)]
print(climb(num_stairs))
# 적용 후
from sys import stdin
def climb(num):
score = [stairs[0]]
if num == 1:
return score[0]
score.append(score[0] + stairs[1])
if num == 2:
return score[-1]
score.append(max(stairs[2] + score[0], stairs[2] + stairs[1]))
for step in range(3, num):
score.append(
max(
stairs[step] + stairs[step - 1] + score[step - 3],
stairs[step] + score[step - 2],
)
)
return score[-1]
num_stairs = int(stdin.readline())
stairs = [int(stdin.readline()) for _ in range(num_stairs)]
print(climb(num_stairs))
오늘은 black을 이용해 자동화된 code formatting을 해보았습니다. 저는 pylint와 함께 사용하고 있는데 상당히 편합니다. 코드를 수동으로 정리하기 귀찮은 분들은 한번 사용해보시기 바랍니다 😁😁
'CS & Programming' 카테고리의 다른 글
Linux/Ubuntu(리눅스/우분투) 하위 "폴더만" 삭제하기 (0) | 2022.12.30 |
---|---|
Ubuntu rm: descend into write-protected directory 'X', 파일 권한 코드를 알아보자 (0) | 2022.12.07 |
Ubuntu 20.04에서 swap 메모리 설정하기 (0) | 2022.04.02 |
docker container에서 디스플레이를 못찾는다? (0) | 2022.03.30 |
vscode n번째 글자에 세로선 추가하기 (easy) (0) | 2022.03.25 |