1. 인덴트
    • 공식 가이드 PEP(Python Enhancement Proposals)에 따라 공백 4칸을 원칙으로 한다.
    • 추가적으로 첫 번째 줄에 파라미터가 있고, 다음줄까지 넘어가게 되었다면
      다음줄의 첫 시작을 첫 번째 파라미터 시작 위치와 맞춰준다.
    • (그냥 pycharm 같은 IDE 사용하면 편하다 🙂)

  2. 네이밍 컨벤션
    • 스네이크 케이스를 따른다 (파이썬의 PEP8 및 철학에 의해) (
      • 스네이크 표기법은 단어를 밑줄로 구분 (예. blog_name)
      • 반면 자바에서는 카멜 표기법을 따른다. (예. blogName)

  3. 타입 힌트
    • PEP 484 문서에 타입을 지정할 수 있는 타입 힌트가 추가되었다 (3.5 버전 이상부터 사용 가능)
    • 타입 힌트를 사용하여 함수의 매개변수, 리턴값의 타입을 지정해주면 가독성이 좋아지고 버그 발생 확률 또한 낮아진다
    • def function(a: int) -> bool: // 이런식으로 타입을 명시해줄 수 있다.

  4. 리스트 컴프리헨션
    • 파이썬은 람다 표현식을 지원한다.
    • 람다 표현식에 map, filter를 사용하는 것보다 리스트 컴프리헨션 사용하면 가독성 좋아진다.
    • 예1) [i for i in range(1, 11) if i%2==0]
    • 예2) {key:value for key, value in original_dict.items()}

  5. 제너레이터
    • 제너레이터가 없이 숫자 1억 개 만들어 계산하는 프로그램 작성한다고 하면, 메모리에 숫자 1억 개를 보관해야 한다.
    • 메모리 사용의 비효율성으로 이어질 수 있기 때문에 제너레이터의 사용법을 익혀두도록 하자. (아래에 코드 첨부)
    • yield 키워드를 사용한다.

  6. range
    • 제너레이터의 방식을 활용하는 대표적인 함수가 range이다.
    • range() 호출하면 range 클래스를 리턴한다.
    • for문에서 range를 사용하면 내부적으로 next()를 호출하여 다음 숫자를 생성하게 된다.

  7. enumerate
    • 순서가 있는 자료형을 인덱스를 포함한 enumerate 객체로 리턴한다.

  8. 나눗셈 연산자 //
    • 파이썬 2 이하 버전에서는 정수 / 정수는 정수를 리턴해주었다.
    • 하지만 파이썬 3 버전에서는 정수 / 정수는 실수를 리턴해준다.
    • 따라서 // 연산자를 추가하여 파이썬 2 이하 버전의 나눗셈 연산자와 동일한 역할을 수행하도록 한 것이다.
    • +) 몫과 나머지를 한 번에 구하기 위해서는 divmod 함수를 사용하면 된다

  9. print
    • 디버깅에서 사용하기 위한 print의 다양한 기능
      • print(x, y) : 콤마로 출력할 변수 구분하기
      • print(x, y, sep=", ")
      • print(x, end=' ') : default로 end는 '\n'이다.
      • print(' '.join(list)) : 리스트 출력 시 사용하면 좋다
      • print('{0} : {1}'.format(x, y))
      • print(f'{x} : {y}') : f-string(formated string literal) 방법 (3.6 이상의 버전에서만 지원)

  10. pass
    • 아직 코드를 작성하지 않은 부분에서 pass를 삽입할 수 있다.
    • pass를 사용하면 전체적인 코드의 골격을 잡기 편하다.

  11. locals
    1. 로컬에 선언된 모든 변수를 조회할 수 있는 강력한 명령으로, 디버깅에 많은 도움이 된다.
    2. 사용 >
      imprt pprint
      pprint.pprint(locals()) 

### 제너레이터 관련 코드

def get_sum():
	n = 0
    while True:
    	n += 1
        yield n
        
sum = get_sum() # 함수 호출하면 generator가 리턴된다
for _ in range(1, 10):
	print(next(sum)) # 1 2 3 4 5 6 7 8 9 10
    # next를 통해 다음 값을 생성한다.
    
    
def generator():
	yield 1
    yield 'string'
    yield True
    
g = generator()
print(g.next()) # 1
print(g.next()) # 'string'
print(g.next()) # True

 


 

코드 스타일

  1. 변수명과 주석
    1. 변수명은 의미를 부여해서 작성하도록 한다.
    2. 주석은 되도록 작성하도록 한다.
      1. 주석을 영어로 작성하는 데 부담이 없도록 해야한다.
      2. 코딩 테스트 시 주석을 작성하는 것을 지향하도록 하자

  2. 리스트 컴프리헨션
    1. list comprehension은 파이썬의 강력한 기능 중 하나이지만, 자칫 잘못 사용하면 가독성을 떨어트린다.
    2. 리스트 컴프리헨션은 표현식이 2개를 넘지 않도록 하고,
    3. 가독성을 위해 list comprehension이 아니라, 풀어서 작성하는 것이 좋을 수 있다.

  3. 함수의 기본 값으로 가변 객체를 사용하지 말고, 불변 객체를 사용해야 한다.
    1. 함수가 객체를 수정하면 기본값이 변경되기 때문에 매개변수의 기본값으로 [], {} 사용하는 것은 지양
    2. 대신에 None을 명시적으로 할당하는 것이 좋다.

  4. 명시적으로 비교 조건을 걸어두기
    1. if i % 10 이 아니라
    2. if i%10 != 0 이런 식으로 조건을 명시적으로 적어주는 게 가독성을 높인다.

  5. 세미콜론은 지양해야 한다. 세미콜론 사용하여 2 문장을 한 줄에 쓰지 않도록 해야 한다.

  6. 가로줄의 길이는 최대 80자로 한다.

+ Recent posts