__init__ = 현재 폴더가 패키지임을 알리는 초기화 스크립트. 하위 폴더와 py파일을 모두 포함한다.
__all__ = 해당 모듈의 공용 객체 목록을 선언
__all__ = [모듈 1, 모듈 2, 모듈 3,...]
가상환경 : 프로젝트를 진행할 때 필요한 패키지만 설치하는 새로운 환경을 뜻함.
주로 다양한 패키지 관리 도구를 사용한다
python의 가상환경을 만들기 위한 도구는 대표적으로 virtualenv와 conda가 있다
| virtualenv | conda |
|---|---|
| <가장 대표적인 가상환경 관리 도구 pip를 사용하기 때문에 래퍼런스와 패키지 사용에 굉장히 유용하다 | 상용 가상환경도구, miniconda 기본 도구, windows에서 더 유용하게 사용 가능하다. |
| Exception 이름 | 내용 |
|---|---|
| IndexError | List의 범위를 넘어갈 때 |
| NameError | 존재하지 않은 변수를 호출할 때 |
| ZeroDivisionError | 0으로 숫자를 나눌 때 |
| ValueError | 변환할수 없는 문자 / 숫자를 변환할 때 |
| FileNotFoundError | 존재하지 않는 파일을 호출할 때 |
try ~ except ~finally
try:
내용
except 에러 이름:
~예외처리
finally:
예외 발생 여부와 상관없이 실행
raise 예외로 뺄 이름 : 강제로 Exception을 발생
~~~~
if ~~~조건:
raise ~(IndexError, ValueError)등
~~~~
assert 예외조건 : 특정 조건에 만족하지 않을 경우 예외 발생```python
~~~~
assert 조건
~~~~
#조건 불만족시 AssertionError 발생
프로그램 진행 상황에 따라 다른 Level의 Log를 출력함
시점, 운영 시점 마다 다른 Log가 남을 수 있도록 지원함
DEBUG -> INFO -> WARNING -> ERROR -> Critical 순으로 심각함
| Level | 내용 |
|---|---|
| DEBUG | 개발시 처리 기록을 남겨야하는 로그 정보를 남김 |
| INFO | 처리가 진행되는 동안의 정보를 알림 |
| WARNING | 사용자가 잘못 입력한 정보나 처리는 가능하나 원래 개발시 의도치 않는 정보가 들어왔을 때 알림 |
| ERROR | 잘못된 처리로 인해 에러가 났으나, 프로그램은 동작할수 있음을 알림 |
| Critical | 잘못된 처리로 데이터 손실이나 더이상 프로그램이 동작할 수 없음을 알림 |
실제 프로그램을 실행할 땐 여러 설정이 필요한데, 이러한 정보를 설정해줄 방법이 필요하다.
Section, Key, Value 값의 형태로 설정된 설정 파일을 사용한다.
설정파일을 Dict Type으로 호출후 사용한다.
특수 모듈도 많이 존재하지만, 일반적으로 argparse를 사용한다.
Command-Line Option이라고 부른다.
CSV, 필드를 쉼표(,)로 구분한 텍스트 파일이다.
엑셀 양식의 데이터를 프로그램에 상관없이 쓰기 위한데이터 형식이라고 생각하면 쉽다.
통칭하여 character-separated values (CSV)라고 부른다.
Web
World Wide Web(WWW), 줄여서 웹이라고 부름
우리가 늘 쓰는 인터넷 공간의 정식 명칭
팀 버너스리에 의해 1989년 처음 제안되었으며,원래는 물리학자들간 정보 교환을 위해 사용됨
데이터 송수신을 위한 HTTP 프로토콜을 사용하고, 데이터를 표시하기 위해 HTML 형식을 사용
XML
데이터의 구조와 의미를 설명하는 TAG(MarkUp)를 사용하여 표시하는 언어로, HTML과 문법이 비슷, 대표적인 데이터 저장 방식이다.
XML은 컴퓨터(예: PC ↔ 스마트폰)간에 정보를 주고받기 매우 유용한 저장 방식으로 쓰이고 있다.
HTML과 같이 구조적 markup이다.
JavaScript Object Notation, 웹 언어인 Java Script의 데이터 객체 표현 방식으로, 데이터 용량이 적고 code로의 전환이 쉽기 때문에 XML의 대체제로 많이 활용되고 있다.
json 모듈을 사용하여 손 쉽게 파싱 및 저장 가능하다.
데이터 저장 및 읽기는 dict type과 상호 호환이 가능하다.
정규표현식으로 Parsing이 가능하나, 더 손쉬운 도구들이 개발되어있다. 그중 가장 많이 쓰이는 parser인 beautifulsoup으로 파싱한다.
정규식 위키백과
print(re.findall('e..o', "Hello")) # ['ello']
print(re.findall('e*', "Hello")) #['', 'e', '', '', '', '']
print(re.findall('s*', "Hello")) #['', '', '', '', '', '']
print(re.findall('e+', "Hello")) #['e']
print(re.findall('e+', "Hello")) #['ll']
print(re.findall('l{2}', "Hello")) #['ll']
print(re.findall('e{2}', "Hello")) #['']
print(re.findall('e?o?', "Hello")) # ['', 'e', '', '', 'o', '']
print(re.findall('He?l', "Hello")) # ['Hel']
print(re.search('e|b', "Hello"))# <re.Match object; span=(1, 2), match='e'>