Python Coding Style

cosmos·2021년 1월 29일
3

Python

목록 보기
1/3
post-thumbnail

글 작성에 앞서...📖

주에 최소 1개씩은 알고리즘 문제 풀이 의외에 프로그램 관련 글을
정리해 작성하는 게 신년 목표 중 하나였으며 이번 주부터 이행할 생각이다.
위와 같은 일을 하는 이유는 아래와 같다.

  • 내용을 정리, 보완하다 보면 더욱 자세히 알 수 있으며 실력 향상 및 기억에도 더 오래 남기 때문.
  • 무언가를 정리하는 습관이 회사 생활에 상당히 유리하기 때문.
  • 내가 쓴 글로 인해 누군가에게 도움이 될 수도 있어서!

첫 글을 모 언어인 c/c++로 작성할지, 현재 실무에서 쓰고 있는 python과 scala 중에 골라서 작성할지 고민하다가 요즘 가장 인기 있는 언어인 python을 선택했다. C를 안 쓴지 오래되서 거의 까먹어서 그렇다.
그렇다면 언어를 선택했다면 그 언어에 따른 어떤 글이 첫 번째 글에 적합할까??
란 생각에 python convention을 제일 먼저 알아두면 좋을 것 같아서 이렇게 글을 작성했다.
아무래도 첫 글인지라 내용 정리가 덜 되었을 수도 있고 가독성이 떨어질 수도 있으니 양해 부탁드립니다😭

Coding Convention

쉽게 말하면 코드를 작성할 때 사용되는 일종의 약속이다.
각 언어마다 문법이 다르듯이 conding convention 또한 다르다.
conding convention은 필수는 아니지만 사용함으로써 코딩의 질을 올릴 수 있다.

코딩을 처음 접한 사람이 아닌이상, 우리는 이미 coding convention을 배웠었다.
보통 printf('hello world!') 바로 다음 장에 나오는 "들여쓰기"가 coding conventino의 일종이다.

  • 들여쓰기는 공백으로 할지 tab으로 할지
  • 공백(띄어쓰기)를 허용할지 안할지

와 같은 사항들이 coding convention에 해당한다.
coding convention을 사용하면 유지보수, 가독성 등에 긍정적인 효과를 볼 수 있다.

PEP 8

요약하자면 아래와 같다.
python coding convention == PEP 8

각 언어마다 성질, 문법이 다르듯이 coding convention 또한 다르다고 위에서 설명했다.
python coding style의 오피셜, 대표적인것이 PEP8이라고 할 수 있다.
python code를 좀 더 "python"스럽게 코딩해서 더욱 효과를 내는것이 이 포스팅의 목적이다.
그렇다면 가독성과 깔끔한 코드로 가장 유명한 파이썬스럽게 코딩하는 방법이 무엇일까?

변수와 상수가 같은지 여부 체크

(Bad)

if var == True:
    print("True!")
    
if var == False:
    print("False!")
    
if var == None:
    print("var is None!")

(Good)

if var:
    print("True!")
    
if not var:
    print("var is False")
    
if var is None:
    print("var is None!")

첫 번째 방식은 C,java와 비슷한 코드 스타일이라고 할 수 있으며
두 번째 방식이 PEP8방식을 따른 결과이다.
첫 번째 방식과 두 번째 방식에 결과로는 차이는없다.
하지만, 가독성과 코드 단축에는 두 번째 방식이 더 효율적이며 코드를 명쾌하고 가장 단순하게 표현할 수 있다.

File 읽고, 닫기

(Bad)

f = open('file')

file = f.read()
print(file)

f.close()

(Good)

with open('file') as f:
    for line in f:
        print(line)

python 유저라면 파일을 읽을 때, with open을 사용하는게 좋다.
with openwith블럭 안에서 예외가 발생한다해도 무조건 파일을 자동으로 닫아주기 때문이다.

List Comprehension

(Bad)

num_list = [3, 4, 5]
empty_list = []

for i in num_list:
    if i > 4:
        empty_list.append(i)

(Good)

num_list = [3, 4, 5]

empty_list = [i for i in num_list if i > 4]
# or
empty_list = filter(lambda x:x > 4, num_list)

첫 번째 방식보다 두 번째 방식이 보기에도 훨씬 편하고 코드도 더 간결하지않은가??
아래와 같은 방식이 바로 python스러운 코드의 일부분이다.
또한, List를 다룰 때, enumerate()를 사용하면 리스트 안의 순서를 세어 기억할수도 있다!

num_list = [3, 4, 5]

for i, item in enumerate(a):
    print(i, item)
    
## result
## 0 3
## 1 4
## 2 5

마무리

이렇게 python code style의 일부분을 위 포스팅을 통해 접할 수 있었다.
프로그래밍 언어의 문법만 배우고 바로 코딩하는것보다는 문법 + 그 언어의 코드 스타일을 같이 한다면 실력, 타 사람들과의 협업 효율 상승등의 효과를 기대할 수 있다.
(좀 더 자세하고 많은 coding convention을 알고 싶다면 참고문헌을 참고해주세요!)

다음 python 포스팅으로는 python에서 switch를 구현하는법을 다룰 예정입니다.
긴 글 읽어주셔서 감사합니다 😊

출처 & 참고문헌📝

https://www.python.org/dev/peps/pep-0008/
https://pep8.org/
https://docs.python-guide.org/

0개의 댓글