주에 최소 1개씩은 알고리즘 문제 풀이 의외에 프로그램 관련 글을
정리해 작성하는 게 신년 목표 중 하나였으며 이번 주부터 이행할 생각이다.
위와 같은 일을 하는 이유는 아래와 같다.
첫 글을 모 언어인 c/c++로 작성할지, 현재 실무에서 쓰고 있는 python과 scala 중에 골라서 작성할지 고민하다가 요즘 가장 인기 있는 언어인 python을 선택했다. C를 안 쓴지 오래되서 거의 까먹어서 그렇다.
그렇다면 언어를 선택했다면 그 언어에 따른 어떤 글이 첫 번째 글에 적합할까??
란 생각에 python convention을 제일 먼저 알아두면 좋을 것 같아서 이렇게 글을 작성했다.
아무래도 첫 글인지라 내용 정리가 덜 되었을 수도 있고 가독성이 떨어질 수도 있으니 양해 부탁드립니다😭
쉽게 말하면 코드를 작성할 때 사용되는 일종의 약속이다.
각 언어마다 문법이 다르듯이 conding convention 또한 다르다.
conding convention은 필수는 아니지만 사용함으로써 코딩의 질을 올릴 수 있다.
코딩을 처음 접한 사람이 아닌이상, 우리는 이미 coding convention을 배웠었다.
보통 printf('hello world!') 바로 다음 장에 나오는 "들여쓰기"가 coding conventino의 일종이다.
와 같은 사항들이 coding convention에 해당한다.
coding convention을 사용하면 유지보수, 가독성 등에 긍정적인 효과를 볼 수 있다.
요약하자면 아래와 같다.
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방식을 따른 결과이다.
첫 번째 방식과 두 번째 방식에 결과로는 차이는없다.
하지만, 가독성과 코드 단축에는 두 번째 방식이 더 효율적이며 코드를 명쾌하고 가장 단순하게 표현할 수 있다.
(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 open
은 with
블럭 안에서 예외가 발생한다해도 무조건 파일을 자동으로 닫아주기 때문이다.
(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/