파이써닉(Pythonic)
파이썬스러운 코드라는 의미. 아주 잘 짜여진 Python
코드를 Pythonic
하다고 부른다. 파이썬스러운 코드라? 파이썬은 무엇보다 읽기 쉽고 가독성이 높은 것을 추구한다. 파이썬에선 가독성이 높은 코드를 작성하기 위해 파이써니스타(파이썬 베테랑)들이 가이드라인을 제시하고 있고 이러한 가이드라인을 잘 따르는 코드가 파이썬스러운 코드다.
Hitchhiker's Guide to Python / PEP 8
위 홈페이지를 둘러보면 정말 잘 정리가 되어있는데 내가 새로 알게된? 자주 활용하지 않았던? 것들만 정리해 볼 예정이다.
정리
- 한 줄의 한 구문을 준수하자
if x == 1: print('one')
위 같은 코드는 절대 작성하지 말자. 가끔가다 가독성을 추구한답시고 위와같이 코딩했던 적도 많았는데 나쁜 예란다. 충격.. 😅
kwargs
는 정말 필요한 경우에만 쓰자 가독성을 저해시킬 수 있다- 클래스에서
private
속성을 가진 변수는 이름 앞에 _(언더스코어)를 사용하여 표현하자
위와같은 경우는 새로 알게 된 사실이다. 파이썬에선 private
속성 자체가 존재하지 않고 사용자가 직접 접근할 수 있는데 _를 달아 둠으로써 주의를 기울이게 할 수 있다.
- 반환값을 대체적으로 하나만 작성하며 예외를 처리해야 하는 경우 최대한 위쪽에 비치시키자. 이런 방식을 early return 이라고 부른다.
def division(x, y):
if y == 0:
return False
return x/y
- 사용하지 않을 변수는 __(언더스코어 2개)로 표현하자. 1개만 사용하는 것은 지양하자. 곂치는 경우가 있다.
for __ in range(10):
print('단순반복')
- 동일한 내용물을 가진 리스트를 생성할때는
*
를 활용하자
list = [None] * 4
- 다차원 리스트를 생성할 경우 리스트 내포를 적극 활용하자!
lists = [[] for __ in range(5)]
- 값이
True
, 거나None
이거나0
인 경우 따로 값을 비교시킬 필요가 없음 if
문에서dict.has_key()
를 쓰지 말고in
으로 키의 존재 여부를 파악하자lambda
+filter
,lambda
+map
을 활용할 수 있으면 적극 활용하자- 파일을 읽는 경우
with open
을 사용하도록 하자 - 길고 이어지는 경우에는 ()를 사용하도록 하자. 닫는 괄호는 개행하기 전에 닫자
from some.deep.module.inside.a.module import (
a_nice_function, another_nice_function, yet_another_nice_function)
my_very_big_string = (
"For a long time I used to go to bed early. Sometimes, "
"when I had put out my candle, my eyes would close so quickly "
"that I had not even time to say “I’m going to sleep.”")
오... ()가 있으면 띄어쓰기를 해서 가독성을 올리는 편인데 ()가 어디서나 활용할 수 있는 도구인지는 몰랐다. 문자열, 임포트할 때도 사용할 수가 있구나 😮
- 개행할때 사칙연산 기호가 있다면 개행 후 기호를 표시한다
add_result = my_very_long_add_function(
my_very_long_variable_one
+ my_very_long_variable_two)
import
할때는 연속적으로 하지 않고 별도로 하는게 합리적이다
import os
import sys
from
을 사용하여import
할때는 연속적으로 해도 좋다
from subprocess import Popen, PIPE
- 불필요한 공백은 지양하라.
,
,:
,;
가 나온 후에만 공백을 두는게 트랜드로 보인다 단 한개의 원소를 가진 튜플인 경우 마지막에,
찍고 띄어쓰기 금지 연산 기호의 경우 앞 뒤로 공백을 준다
spam(ham[1], {eggs: 2})
bread = (3,)
total_age = person1.age + person2.age
PEP 8
을 이용하여 가이드라인을 준수하고 있는지 파악해보자
pip install pep8
pep8 mysouce.py
Ghost