프로그래밍/Python

[Effective Python] 1장 - 파이썬답게 생각하기

Dibrary 2022. 9. 21. 09:50
반응형

안녕하세요 Dibrary입니다.

이 글은 Effective Python (한국어 번역제목은 '파이썬 코딩의 기술' 입니다)의 1장 내용을 정리했습니다.

 

1. 사용중인 파이썬의 버전을 알아두자

이렇게 간단히 버전을 확인할 수 있습니다.


2. PEP8 스타일 가이드를 따르자

 

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


3. bytes와 str의 차이를 알아두자

str 인스턴스에는 직접 대응하는 이진 인코딩이 없고 bytes에는 직접 대응하는 텍스트 인코딩이 없다.

str에 bytes를, bytes에 str을 더할 수는 없다. 당연히 비교도 안 된다. 

bytes를 str로, str를 bytes로 바꿀 수 있다. 바꾸는 코드는 아래와 같다.


4. f-문자열 표현방식을 사용하자

위 코딩방식대로 쓰는 것이 f-문자열 표현방식이다. 

f-문자열 방식은 식 안에서 현재 파이썬 영역에서 사용할 수 있는 모든 이름을 자유롭게 참조할 수 있도록 한다.


5. 복잡한 식 대신 도우미 함수를 작성하자

메서드를 분리하면 된다. 객체지향적 코딩으로 가독성이 좋다.


6. 인덱스 쓰는 대신 대입을 사용해 데이터를 언패킹하자

데이터를 언패킹 한다는 것은 묶인 것을 각각의 변수로 담는다는 것. 굳이 index를 쓸 필요가 없는 곳에 index를 써서 나타내면 가독성이 더 안좋게 보인다.


7. range보다는 enumerate를 사용하자

range를 이용해서 index로 접근하는 것 보다, enumerate를 통해 index가 별개로 확인될 수 있는 것이 더 낫다.


8. 여러 이터레이터에 대해 나란히 루프를 수행하려면 zip을 사용하자

두 개의 이터레이터는 zip으로 한 번에 확인할 수 있다.

문제는, 두 이터레이터의 길이가 다를 경우인데, 다르면 짧은 것에 맞춰진다.

굳이 나타낸다면, itertools 모듈에 있는 zip_longest를 쓰면 된다.


9. for나 while루프 뒤에 else구문을 사용하지 말자

이건 너무나 의아했는데... 이런 사람도 있었나보다. else는 조건문에 붙이는 것으로 인식하면 별 문제 없다.


10. 대입식을 사용해 반복을 피하자

왈러스 연산자를 사용하면 곧바로 조건문에 대입이 이뤄지면서 조건을 따질 수 있다.

위 코드에서 fresh_fruit.get을 통해 해당 key의 값을 가져온다. 가져온 값을 곧바로 count에 넣고, count에 대해 if 조건문이 실행되는 것이다.

가능하면 대입식 주위에 괄호 쓰는 일을 피해야 한다.

728x90
반응형