본문 바로가기

PYTHON

(14)
Rest API, Flask, python 속도 향상법 Rest API API(Application Programming Interface)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다. 파이썬의 함수나 클래스 같은 기능들 하나하나가 일종의 API이다. Rest(Representational State Transfer)란 자원(Resource)의 표현(Representation)에 의한 정보전달이다. 예를들면, 파이썬의 list나 dictionary 등(자원)을 json 파일의 형태(표현)으로 전달하는 것이다. 즉, Rest API란 Rest의 특징을 지키면서 API를 제공하는 것이다. Res..
Pandas Pandas Numpy 기반으로 개발된 데이터 분석도구이며, pandas는 주로 Series보다 DataFrame을 많이 쓴다. 리스트 형식으로 생성할 수도 있지만 dictionary로부터 생성할 수도 있다. import pandas as pd # pandas.Series는 1차원 데이터를 다루는 데 효과적이다. print(pd.Series([1,2,3,4])) # 0 1 # 1 2 # 2 3 # 3 4 # dtype: int64 # pandas.DataFrame은 2차원 데이터를 다루는데 유용하다. # 리스트 형식 print(pd.DataFrame([[1,2,3,4],[5,6,7,8]], columns=['co1','co2','co3','co4'])) # co1 co2 co3 co4 # 0 1 2 3 ..
Numpy Numpy C를 기반으로 작성된 라이브러리로 Numerical Python의 줄임말이다. 파이썬에서 과학적 계산을 위한 핵심 라이브러리로 다차원 배열 객체와 이들의 계산을 위한 다양한 도구들을 제공한다. import numpy as np와 같은 방식으로 많이 호출한다. 배열 : 다차원 배열객체 np에서의 각 위치의 자료는 모두 같은 자료형이어야 한다. np.array(컬렉션) 을 통해 생성할 수 있다. .dtype을 통해 각 데이터의 자료형을 알 수 있다. numpy에서 사용되는 자료형 부호가 있는 정수 int(8, 16, 32, 64) 부호가 없는 정수 uint(8 ,16, 32, 54) 실수 float(16, 32, 64, 128) bool 문자열 string 파이썬 오프젝트 object 유니코드 u..
DB 연동과 정규식 DB 연동 파이썬 라이브러리는 pypi 사이트를 통해서 확인 가능하다. https://pypi.org/ PyPI · The Python Package Index The Python Package Index (PyPI) is a repository of software for the Python programming language. pypi.org Pip 설치(예시) pip install pymysql pip install sqlalchemy Database 데이터베이스(DB)란 특정 다수의 이용자들에게 조직 내에서 필요로 하는 정보를 체계적으로 축적하는 저장소이다. 이 저장소에서 자주 쓰이는 표준 언어로 sql이 있다. # DB 연동 예시 import sqlalchemy engine = sqlalche..
병렬처리(프로세스와 쓰레드), Process와 Pool의 차이 병렬처리(프로세스와 쓰레드) 프로세스 : 실행 중인 프로그램으로 자원과 쓰레드로 구성한다. 쓰레드 : 프로세스 내에서 실제 작업을 수행한다. 파이썬은 인터프리터 언어로서 기본적으로 싱글 쓰레드에서 순차적으로 동작한다. 따라서 병렬처리를 위해선 별도의 모듈을 사용하여 수행해야 한다. from threading import Thread import time def work(work_id, start, end, result): total = 0 for i in range(start, end): total += i result.append(total) if __name__ == "__main__": # 현제 페이지에서만 작동하도록 한다. start = time.time() # 현재시간을 초단위로 보여준다. re..
추상 클래스, isinstance, assert 문, __call__, 파일처리, with ~ as 문, 직렬화, 디렉토리(폴더) 생성 추상 클래스 추상 클래스는 abc 모듈의 ABCMeta 클래스를 상속받아 만든다.(abc는 추상 클래스를 정의할 때 사용하는 모듈이다.) 추상 클래스는 이를 상속받은 자식 클래스가 부모 클래스의 특정 메서드를 구현하도록 강제하는 클래스이다. 추상 메소드라는 @abstractmethod 데코레이터를 사용하여 자신의 하위객체에게 특정 메소드의 생성을 강제할 수 있다. 추상 클래스는 자신의 객체를 생성할 수 없다. 추상 메소드는 이름만 존재하고 내용은 없다. 추상 클래스는 abc 모듈의 ABCMeta 클래스를 상속받아 만든다. 이때 반드시 metaclass=메타클래스이름 의 형태로 상속받는다. metaclass는 클래스를 제어하는 클래스로, 여기서는 Abstract 클래스를 ABCMeta 클래스로 제어하고자 ..
classmethod와 private 변수 classmethod # 정적 메소드와 유사하지만, 첫 번째 변수로 클래스 객체가 전달되는 것이 다르다. # cls 매개변수 사용 # @classmethod 데코레이터로 수식 class student: count=0 @classmethod def cmethod(cls): # 첫 번째 변수로 클래스 객체가 전달 print("클래스 메소드") print(cls.count) # 0 @staticmethod def smethod(): print("정적 메소드") student.cmethod() student.smethod() # 클래스 메소드 # 0 # 정적 메소드 private 변수 # getter를 통해 값을 불러 온다. # setter를 통해 값을 바꿀 수 있다. class human: def __init..
조금 더 알아보는 python 함수 *, **의 차이 # 함수 안에서 사용할 때 *, **은 입력값이 몇 개가 될 지 모를 때 사용한다. def printer(*var): # * 하나는 튜플 형태로 출력된다. return var ret = printer(1,2,3,4) print(ret) # (1, 2, 3, 4) def func(**args): # ** 둘은 딕셔너리 형태로 출력된다. return args result = func(k1=1, k2=2) # 딕셔너리이기 때문에 이와 같은 형태로 매개변수 이름을 지정해 주어야 한다. print(result) # {'k1': 1, 'k2': 2} # addition(a=3, 2)와 같은 표현은 불가능하다. 변경하려면 변경값을 뒤에 넣어야 한다. def add(a=1, b=3): return a..