목록Backend/Python + FastAPI (19)
elevne's Study Note

Python에서는 Iterable 객체를 손쉽게 다룰 수 있다. Python에서는 구조적으로 거의 모든 개체를 iterator로 사용할 수 있도록 지원한다고 한다. 오늘은 이와 관련하여 Iterable, Iterator 둘에 대해 알아보았다. Iterable / Iterator Iterable은 가지고 있는 값을 한 번에 하나씩 반환할 수 있는 개체를 뜻한다. 그 예로 List, String, Tuple 등이 있을 것이다. 하지만 Iterable이 꼭 한 번에 값을 하나씩 반환해야 하는 것은 아니다. 한 번에 모든 값을 반환할 수도 있다. 이와 다르게 Iterator은 한 번에 하나씩만 값을 반환하는 개체이다. 그래서 정리하자면 Iterable 개체 중에서 한 번에 하나씩 값을 반환하는 것만 Iterat..

저번 시간에 이어서 Decorator에 대해서 더 알아보았다. 한 함수에 2 개 이상의 Decorator을 사용하는 것이 가능하다고 한다. 아래와 같이 코드를 작성할 수 있는 것이다. import time import datetime def runtime(func): def wrapper(*args, **kwargs): start = time.time() result = func(*args, **kwargs) end = time.time() print("{} FUNCTION RUN TIME: ".format(func.__name__)+str(end - start)) return result return wrapper def logger(func): def wrapper(*args, **kwargs): t..

예외처리 Python도 다른 언어들과 마찬가지로 예외처리 구문을 사용할 수 있다. 아래와 같이 코드를 작성해줄 수 있다. def readFile(fileName): try: f = open(fileName, "r") except: print("FILE OPEN ERROR") else: print(f.read) f.close() finally: print("DONE") try 뒤의 구문을 try 하고, 실패할 시 except, 성공할 시 else 구문을 이어서 실행한다. finally 뒤의 구문은 마지막에 try 구문을 성공하든 실패하든 실행하게 된다. 파이썬의 else 구문에서는 try 구문에서 선언한 변수를 그대로 사용할 수 있기에 try 구문의 코드는 최소화하여 정말 예외가 필요한 코드만 작성하고 나..

Python 변수 Python에서느 변수의 유효 범위를 게산할 때 Namespace를 기반으로 계산한다. Python의 Namespace는 built-in, global, enclosed, local 4 개로 나눌 수 있다. built-in 은 Python에 내장되어 있는 Namespace로 Pythonㅇ로 작성된 코드 어디에서나 이용이 가능하다. global 은 전역적으로 사용 가능한 변수로 파일 단위의 모듈 안에서 유효하다. enclosed 는 함수 안에 함수가 있는 구조에서 내부 함수가 외부 함수의 변수에 접근할 수 있는 것을 의미한다. local 은 지역적인 Namespace로 Class, function의 내부로 한정된다. Python 의 Class, function 내에서 외부의 변수를 사용하..

어제에 이어서 Plotly에 대한 공부를 해보았다. ML, DL 활용 모델을 생성하고 이를 그래프로 표현할 때 plotly를 활용할 수 있는 법에 대해 알아보았다. Plotly 자체에서도 추세선을 그릴 수 있게끔 해주는 기능이 있었다. tips 데이터를 가지고 scatter 함수를 사용할 때, parameter로 trendline 값을 넣어주면 추세선이 자동적으로 생성된다. (아래 코드 fig.show() 함수 내에 renderer='colab'을 넣어주었다. Colab 상에서 그래프가 보이지 않을 때 작성해주면 문제 없이 잘 나타난다.) df = px.data.tips() fig = px.scatter( df, x='total_bill', y='tip', opacity=0.65, trendline='o..

오늘은 최근 유행하는 Python 시각화 라이브러리인 Plotly에 대해 공부해보았다. Plotly는 Matplotlib과 같이 Chart, Plot, 지도 및 다이어그램 등을 생성, 조작 및 렌더링하기 위해 만들어진 라이브러리이다. 렌더링 프로세스는 Plotly.js 라는 자바스크립트 라이브러리를 사용하지만, 이 모듈을 사용하는 개발자는 JS 라이브러리와 직접 상호작용할 필요가 거의 없다고 한다. 그림은 Python 상에서 Dict, 혹은 plotly.graph_objects.Figure 클래스의 Instance로 표현되고, 이 정보는 JSON 형식으로 Serialize 되어 Plotly.js 라이브러리로 전송된다고 한다. 우선 plotly, kleido, dash 를 설치해주었다. pip instal..
오늘은 가지고 있는 JSON파일을 토대로 같은 이름의 음성파일을 편집/전처리를 해야 했다. JSON 파일 안에는 같은 이름의 음성파일의 데이터의 텍스트 정보가 시간대별로 나눠져 적혀 있는데, 그 정보를 바탕으로 음성파일을 자르는 것과, JSON 파일을 파싱하여 필요한 정보만 가져와서 csv 파일로 만드는 것이 목표였다. 우선 python의 os 라이브러리를 사용하여 Input 데이터들이 전부 짝이 맞게 잘 갖춰져있는지 확인하였다. def chkFilesFolders(inputFolderPath, resultFolderPath): if not (os.path.exists(inputFolderPath)): print("입력 파일 폴더가 존재하지 않습니다.") if not (os.path.exists(resu..

FastAPI 활용 프로젝트에서 최적 경로를 찾는 알고리즘이 필요하여 TSP 알고리즘을 찾아보고 사용하게 되었다. TSP(Travelling Salesman Problem)는 조합 최적화 문제로 전산학에서 연구된 가장 유명한 문제 중 하나라고 한다. 이 알고리즘을 통해 해결하고자 하는 문제는 다음과 같다. Q. 방문지의 개수와 각 방문지 쌍 간의 거리가 모두 주어질 때, 모든 방문지를 딱 한 번씩 방문하고 시작 위치로 돌아올 수 있는 최단거리경로를 구하시오. 내가 프로젝트에서 마주한 문제와 동일해서 해당 알고리즘의 코드를 찾아보았고, 아래 링크에서 가져온 코드는 다음과 같았다. 링크: https://stackoverflow.com/questions/66084154/python-dynamic-program..