데이터 분석에 대한 아티클 읽고 정리
파이썬 초보자가 저지르는 10가지 실수 | 요즘IT
파이썬을 처음 배울 때, 우리는 자신도 모르게 몇 개의 나쁜 코딩 습관들을 갖게 됩니다. 처음에는 문제없이 작동했지만, 나중에 정상적으로 작동하지 않거나 뒤늦게 문제를 더 쉽게 해결할 수
yozm.wishket.com
✔ 요약
- 파이썬을 처음 배우는 초보자들이 흔히 실수하는 나쁜 코딩 습관들
✔ 주요 내용
- import *을 사용함
- from xyz import * 사용해서 모든 모듈을 한번에 불러오면 모듈에 객체가 많은 경우 오랜 시간 기다려야 하고, 변수명에 충돌 일으킴 → 사용하려는 특정 객체를 불러오거나, *를 사용하지 않고 전체 모듈을 불러온 후 객체를 사용하기 전에 모듈명을 명시
- 예외 처리: ‘except’ 절에 예외를 지정하지 않음
- bare ‘except’의 문제는 SystemExit와 KeyboardInterrupt 예외(exception)를 잡아서, Control-C로 프로그램을 중지하기 어렵게 만든다는 것 → try/except를 사용할 때에는 except 절에 예외를 꼭 지정
- 수학 계산에 Numpy를 사용하지 않음
- Numpy가 for 루프보다 수학 연산 더 빠름
- 이전에 열었던 파일을 닫지 않음
- write/read 메소드를 사용할 때 예외가 발생하게 된다면 이미 열린 파일은 닫히지 않음 → with 구문을 사용해야 예외가 발생해도 파일을 정상적으로 닫을 수 있음
- PEP8의 가이드라인을 벗어남
- 파이참의 경우 밑줄 위 마우스 가져다 대면 PEP8가이드라인 따라 수정하는 방법 나옴 (ex. ,와 : 뒤에 공백 한 칸 추가, 이해하기 쉬운 변수명 사용)
- 딕셔너리를 사용할 때 .keys와 .values를 적절하게 사용하지 않음
- 딕셔너리 반복하여 key값 얻을 때 .keys 없어도 얻을 수 있고, value 얻을 때도 .items() 쓰면 더 쉽게 해결됨
- 컴프리헨션(comprehension)을 사용하지 않음(혹은 언제나 사용)
- 이미 정의된 시퀀스로 새로운 시퀀스(리스트, 딕셔너리 등) 생성할 때 더 짧은 코드로 가능함(ex.리스트의 모든 요소 소문자로 치환) but 과도한 사용 x
- range(len()) 사용
- 두 리스트를 동시에 반복할 때 range(len())을 사용하는 대신 enumerate 혹은 zip 사용하는 것이 더 효율적
- 연산자를 사용한 문자열 연결
- +대신 f string 쓰는 게 더 효율적이고 다양한 응용방법이 있음
- Mutable value를 디폴트 매개변수로 사용할 때
- 리스트를 디폴트 매개변수로 포함하면 함수 호출할 때마다 계속해서 이전 호출의 값이 저장됨 → 빈 리스트로 시작 (리스트의 디폴트값을 None으로 설정하고 if구문 추가)
def my_function(i, my_list=None):
if my_list is None:
my_list = []
my_list.append(i)
return my_list
✔용어 정리
1. mutable value 변하는 값 ex.리스트, 딕셔너리
2. immutable value 변하지 않는 값 ex.튜플, 정수, 실수, 문자열
✔ 인사이트
1~4번은 아직 겪어보지 못 했는데 미리 알고 방지할 수 있어 좋다. 지난번에 enumerate로 푼 문제 zip으로 풀 수 있는지 확인해봐야겠다. range(len())은 오히려 생각 못 했는데 비효율적이라곤 하지만 참고.