Develop/Computer Science

[Python] 파이썬답게 생각하기 (1/2)

세미제로 2023. 1. 4. 09:01

본 포스팅은 "파이썬 코딩의 기술(브렛 슬라킨 외 저)"를 보고 작성했습니다.

파이썬 주니어들이 시니어로 발돋움하기 위한 최고의 책이라고 생각되네요!!

 https://www.gilbut.co.kr/book/view?bookcode=BN002890 

 

Effective Python 2nd 이펙티브 파이썬 : 파이썬 코딩의 기술

똑똑하게 코딩하는 법, 개정판

www.gilbut.co.kr


BETTER WAY 1  "사용 중인 파이썬의 버전을 알아두라"

  • 파이썬 3는 파이썬 최신 버전이며 현재 가장 잘 지원됨, 파이썬 2는 사용하지 말기!
  • 시스템에 있는 파이썬 실행 파일의 버전을 상시 확인!
$ python --version
Python 3.6.10
  • 내장 모듈인 sys 값 검사
import sys
print(sys.version_info)
print(sys.version)

BETTER WAY 2  "PEP 8 스타일 가이드를 따르라"

파이썬 답게 코드를 작성하는 것은 파이썬 답게 생각하기의 기초

파이썬 개선 제안(Pyhton Enhancement Proposal) #8을 코드 작성할 때 가까이 하자!!

(https://peps.python.org/pep-0008/)

 

PEP 8 – Style Guide for Python Code | peps.python.org

PEP 8 – Style Guide for Python Code Author: Guido van Rossum , Barry Warsaw , Nick Coghlan Status: Active Type: Process Created: 05-Jul-2001 Post-History: 05-Jul-2001, 01-Aug-2013 Table of Contents This document gives coding conventions for the Python co

peps.python.org

여태 완전 잘못하고 있었네...

 

[공백]

  • 탭 대신 스페이스를 사용해 들여쓰기!
  • 문법적으로 중요한 들여쓰기는 4칸 들여쓰기
  • 라인 길이는 79 문자 이하(영문 기준, 한글은 그의 절반)
  • 긴 식을 다음 줄에 이어서 쓸 경우에는 일반적인 들여쓰기보다 4스페이스를 더 들여쓰기
  • 파일 안에서 각 함수와 클래스 사이에는 빈 줄을 두 줄 넣기
  • 클래스 안에서 메서드와 메서드 사이에는 빈 줄을 한 줄 넣기
  • 딕셔너리에서 키와 콜론 사이에는 공백을 넣지 않고, 한 줄 안에 키와 값을 같이 넣는 경우 콜론 다음에 스페이스 하나!!
  • 변수 대입 = 전후에는 스페이스 하나씩
  • 타입 표기를 덧붙일 때 변수 이름과 콜론 사이에 공백 X

 

[명명 규약]

  • 함수, 변수, 애트리뷰트는 lowercase_underscore처럼 소문자와 밑줄
  • 보호돼야 하는 인스턴스 애트리뷰트는 일반적인 애트리뷰트 이름 규칙을 따르되, _leading_underscore처럼 밑줄로 시작한다.
  • 비공개 인스턴스 애튜리뷰트는 일반적인 애트리뷰트 이름 규칙을 따르되, __leading_underscore처럼 밑줄 두개로 시작
    • 비공개 인스턴스 애트리뷰트?? : 한 클래스 안에서만 쓰이고 다른 곳에서는 쓰면 안되는 경우
  • 클래스는 CapitalizeWord처럼 여러 단어를 이어 붙이되, 각 단어의 첫 글자를 대문자로 만든다.
  • 모듈 수준의 상수는 ALL_CAPS 처럼 모든 글자를 대문자로
  • 클래스 매서드는 클래스를 가리키는 첫번째 인자의 이름으로 반드시 CLS 사용

[식과 문]

  • 긍정적인 식을 부정하지 말고(if not a is b) 부정을 내부에 넣어라(if a is not b)
  • 빈 컨테이너([ ])나 시퀀스(' ')를 검사할 때는 길이 0비교 말기(if len([]) == 0)
    • 빈 컨테이너나 시퀀스 값은 False로 취급 
  • 식을 한 줄 안에 다 쓸 수 없는 겨우, 줄이 계속된다는 표시를 하는 \ 문자 보다는 괄호를 사용하라

[임포트]

  • import문, from import문을 항상 파일 맨 앞에 위치시켜라
  • 모듈을 임포트할 때는 절대적인 이름을 사용하고, 현 모듈의 경로에 상대적인 이름을 사용하지 마라
    • bar 패키지로부터 foo 모듈 임포트 시 from bar import foo( import foo X)
  • 반드시 상대적인 결로로 임포트 할 경우 from . import foo처럼 명시적인 구문 사용
  • 임포트의 순서가 일관되도록 신경써라!

BETTER WAY 3  "bytes와 str의 차이를 알아두라"

파이썬에는 문자열 데이터의 시퀀스를 표현하는 두 가지 타입(bytes, str) 존재

  • bytes에는 8비트 값의 시퀀스, str에는 유니코드 코드 포인트의 시퀀스
  • 처리할 입력이 원하는 문자 시퀀스인지 확실히 하려면 도우미 함수 사용
  • bytes와 str 인스턴스를 연산자에 섞어서 사용할 수 없음
  • 이진 데이터를 파일에서 읽거나 파일에 쓰고 싶으면 항사 이진 모드('rb'나 'wb')로 파일을 열어라

BETTER WAY 4  "f-문자열을 통한 인터폴레이션을 사용하라"

  • % 연산자를 사용하는 C 스타일 형식화 문자열은 여러 가지 단점과 번잡성을 갖고 있음
  • f-문자열은 간결하지만, 위치 지정자 안에 임의의 파이썬 식을 직접 포함시킬 수 있으므로 매우 강력하다.

☆ C 스타일 형식 문자열 표현

key = 'my_var'
value = 123

formatted = '%-10s = %.2f' % (key,value)
print(formatted)

★ f-문자열 표현 (확실히 깔끔하다)

key = 'my_var'
value = 123

formatted = f'{key} = {value}'
print(formatted)

BETTER WAY 5  "복잡한 식을 쓰는 대신 도우미 함수를 작성하라"

  • 복잡한 식을 함수로 옮겨라!! 특히 같은 로직을 반복해 사용할 때는 도우미 함수를 꼭 사용하라!
  • 불(boolean)연산자 or나 and를 식에 사용하는 것보다 if/else 식을 쓰는 편이 더 가독성이 좋다.