참고
https://myjorney.tistory.com/19 , https://wikidocs.net/26 . https://withcoding.com/82
설정값 관리 : https://mingrammer.com/ways-to-manage-the-configuration-in-python/
logging : https://hamait.tistory.com/880 , https://docs.python.org/ko/3.7/howto/logging-cookbook.html
Python 정보
__init__.py : 하나의 경로에 하나의 파일로 존재하여, 파일이 위치한 경로(폴더)를 패키지 모듈처럼 사용할 수 있도록 해주는 매우 중요한 기능을 수행함.
modules(모듈) : 함수,클래스등을 정의해둔 .py파일
packages(패키지) : .py파일들이 들어있는 디렉토리 init.py 파일로 패키지 인식하며, import시 init.py가 대상이됨.
모듈(Module)은 파이썬 코드를 논리적으로 묶어서 관리하고 사용할 수 있도록 하는 것으로, 보통 하나의 파이썬 .py 파일이 하나의 모듈이 된다. 모듈 안에는 함수, 클래스, 혹은 변수들이 정의될 수 있으며, 실행 코드를 포함할 수도 있다.
전역변수
__name__ : 모듈의 이름이 저장되는 변수 이며, 해당 python 소스코드 파일명으로 최초 진입시에는 main으로 변경되어 실행되며, import시에는 본래 name으로 유지됨
__all__ : __init__ 안에 정의(__all__=['','']) from 패키지 import * 사용시 대상모듈 지정할때 정의하여 사용함
코딩 규칙 (공식 문서 PEP (Python Enhancement Proposal) : https://www.python.org/dev/peps/pep-0008/)
코딩블럭 : java,c#과 다르게 {}를 사용하지 않고 들여쓰기(space*4를 사용 tab 사용하지 않음)를 사용함
코멘트 : #을 사용함 (#뒤에 하나의 공백을 두는것을 권장)
블럭 코멘트 : """ ~ """ or ''' ~ '''
언더바(_)사용에 관해 정리 필요 - 참조 http://gomguard.tistory.com/125
사용처
인터프리터(Interpreter)에서 마지막 값 실행 결과값 저장할 때
특정값을 무시하기 위한 용도로 사용(ex. 특정값 무시 : x, _, y = (1, 2, 3) # x = 1, y = 3 , 여러개 값 무시 x, *_, y = (1, 2, 3, 4, 5) # x = 1, y = 5)
single 언더바(_) private 클래스/함수/변수/메서드를 선언할 때 사용 (import시 무시되나, 사용하지 말라는 의미이나 사용을 막지 않음)
double 언더바(__) 는 메직메소드 or 맹글링에 사용됨. (ex. __str__ or __ClassNameMethodName)
숫자 리터럴값의 자릿수 구분을 위한 구분자로써 사용 (ex. hex_base = 0x_1234_abcd print(hex_base) # 305441741)
들여쓰기 : Tab 대신 공백(Space)을 사용한다(4 space)
함수호출, 파라미터 등에 불필요한 공백은 넣지 않는다.
multi return : python은 타 언어와 달리 튜플 형태의 멀티 리턴도 가능함
Method (https://hamait.tistory.com/635 참고)
인스턴스 메소드 : 첫번째 매개변수 'self'를 선언하여 만들고, 클래스 인스턴스를 통해서 접근 가능
클래스 메소드 : @classmehtod 데코레이터 와 첫번째 매개변수 'cls'를 선언하여 만들고, 클래스명을 통해 바로 접근 가능
static 메소드 : @classmehtod 데코레이터 와 첫번째 매개변수 지정없이 선언하여 만들고, 클래스명 과 인스턴스를 통해 점근가능
Tip
정보
python 버전정보 : python --version
pip 버전정보 : pip --version
현재 폴더 위치 : print(os.getcwd())
Import : import 시점에 해당 코드가 실행됨. 동일한 이름의 항목은 마지막에 import된 항목으로 덮어써지며 별칭(as()를 이용하여 이름변경 하여 사용할 수 있음. ( 점(.)은 현재위치 패키지를 의미함)
import 모듈이름
form 모듈이름 import 모듈함수(or *)
의존성 관리
setup.py에는 PyPI에 배포할 라이브러리를 만들 때 의존성을 지정하고 requirements.txt는 서버 등에 배포할 때 의존성을 지정하는데 사용한다.
데코레이터(@)
java 어노테이션과 형태는 유사해 보이나 역할은 전혀 다름, 데코레이션은 함수 기능에는 관여하지 않고 꾸며주는 역할을 함
설정(config)값 관리???
빌트인 데이터 구조를 사용한 설정
외부 파일을 통한 설정
환경 변수를 사용한 설정
동적 로딩을 통한 설정
모듈
PyPI (Python Package Index) : 패키지 관리
pip 정보 : pip show pip
pip 설치 패키지 리스트 : pip list
pip 패키기 검색 : pip search 키워드
pip 패키지 설치 : pip install 패키지명
pip 패키지 업데이트 : pip install -upgrade 패키지명
pip 패키지 삭제 : pip uninstall 패키지명
Windows CMD pip 사용 : 설치 폴더 > Scripts 위치에서 명령 실행 하면됨.
pip 패키지 그룹 관리 할 수 있음 (development 가상환경을 production 가상환경 Deploy 할는데 유용함)
requirements.txt 파일을 만들어 사용(이미 설치된 패키지를 파일로 만들기 '$ pip freeze > requirements.txt') : $ pip install -r requirements.txt
requirements.txt 파일을 이용하여 패키지 삭제 ''$ pip uninstall -r requirements.txt -y (-r:리스트, -y:삭제'예')
PBD : 파이썬 디버거 (실행시 옵션을 넣는 방법 -m pbd 과 소스파일에 임포트 하는 방법 import pbd )
명령어
help : 도움말
next : 다음 문장으로 이동
print : 변수값 화면에 표시
list : 소스코드 리스트 출력. 현재 위치 화살표로 표시됨
where : 콜스택 출력
continue : 계속 실행. 다음 중단점에 멈추거나 중단점 없으면 끝까지 실행
step : Step Into 하여 함수 내부로 들어감
return : 현재 함수의 리턴 직전까지 실행
!변수명 = 값 : 변수에 값 재설정
아나콘다(Anaconda) : 수학과 과학 분야에서 사용되는 여러 패키지들을 묶어 놓은 파이썬 배포판(패키지묶음)
https://www.anaconda.com/ 에서 OS에 맞는 파일 다운로드 후 설치 필요
Jupyter와 같은 IDE 개발도구, Numpy, SciPy 같은 과학 분석용 라이브러리, Matplotlib 같은 데이타 시각화 (Data Visualization) 라이브러리, TensorFlow 같은 머신 러닝(Machine Learning) 라이브러리 등을 포함하고 있다.