본문 바로가기

분류 전체보기

(94)
Python - 중급 05 (generator) generator는 한 마디로 iterator를 생성해 주는 함수입니다. iterator와 동일하게 next() 함수를 사용하여 데이터를 순차적으로 호출 할 수 있습니다. generator를 알기 위해 먼저 yield 키워드에 대해 살펴보겠습니다. iterator는 Python - 중급 04 (iterator)를 참조 하십시오. yield 키워드 yield는 함수에서 값을 반환(return)하고, 함수의 실행을 그 지점에서 일시적으로 중지합니다. 다음 번에 함수가 호출되면, yield 다음의 명령문부터 실행이 재개됩니다. 예시를 통해 이해해 보겠습니다. def test(): print('A') yield 1 print('B') yield 2 print('C') yield 3 t = test() print..
Python - 중급 04 (iterator) python의 iterator는 뭘까요? 한 마디로 next()를 사용 하여 다음 요소를 가져올 수 있는 객체를 의미합니다. 이해가 안되시죠? 하나씩 알아보도록 하겠습니다. 먼저, 반복 가능(iterable)하다는 것은? iterable 하다는 것은 여러 값이 그룹화 되어 있는 데이터 구조에서 요소를 하나씩 꺼내어 사용할 수 있다는 의미입니다. 이러한 데이터 구조는 list, tuple, dictionary, set 등이 있습니다. for문으로 값을 읽어 올 수 있으면 iterable 하다고 할 수 있습니다. a = [1, 2, 3, 4, 5] # a = (1, 2, 3, 4, 5) # a = {1, 2, 3, 4, 5} # a = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}..
Python - 중급 03 (lambda) 일반적으로 코딩 할 때 함수를 많이 사용합니다. def로 함수를 정의하고 필요할 때 호출을 합니다. 그런데 만약 한번만 사용하면 되는 함수가 있다고 가정해 보겠습니다. 이런 경우에 def로 함수를 정의 하지 않고 바로 사용 할 수 있다면 편리 하겠죠. python은 이러한 기능을 제공하고 있으며 이를 lambda 함수라고 합니다. 간단한 예시 함수 선언 def add(a, b): return a + b print(add(1, 2)) 3 lambda 함수 print((lambda a, b: a + b)(1, 2)) 3 기본 문법 lambda arguments: expression lambda: lambda 키워드 - 이건 lambda 함수라는 의미입니다. arguments: 함수에 전달되는 파라미터를 의미..
Python - 중급 02 (map, filter, reduce) python의 map 함수를 처음 접하면 상당히 혼란스러울 수 있습니다. 음~~ 이게 뭐지? 우선 map 함수를 사용하지 않고도 원하는 결과를 얻을 수 있습니다. 그럼 몰라도 되는거 아냐? 그러나 세상은 그렇게 호락호락하지 않습니다. 다른 사람이 작성 한 코드에는 map 함수가 사용되어 있을 수 있습니다. 개념을 모르면 이해 하는 데 어려움을 겪을 수 있습니다. 추가로 간단히 말씀을 드리자면 map은 인자에 함수를 전달 합니다. 이를 함수형 프로그래밍이라고 합니다. python은 함수형 프로그래밍을 지원하는 언어입니다. map의 사용법을 이해하면 python의 함수형 프로그램밍을 이해하는데 도움이 될 것입니다. 설명을 하는 것 보다 간단한 예시를 통해 이해 하는 것이 더 좋을 것 같습니다. 간단한 예시 ..
Python - 중급 01 (list comprehension) Python은 리스트 컴프리헨션(list comprehension)이라는 기능이 있습니다. list comprehension은 음~~~ 의미를 설명 하는 것 보다 간단한 예시를 통해 이해 하는 것이 더 좋을 것 같습니다. 간단한 예시 항목이 [1, 2, 3, 4, 5]인 리스트 a가 있습니다. 이 리스트의 각 항목을 제곱하여 새로운 리스트를 생성하고자 합니다. 이때 list comprehension을 사용하면 아래와 같이 간단히 표현 할 수 있습니다. a = [1, 2, 3, 4, 5] result = [i**2 for i in a] print(result) [i**2 for i in a] 이 부분이 list comprehension입니다. 결과 값은 아래와 같습니다. [1, 4, 9, 16, 25] 기..
FastAPI - 22 (Nginx) 앞서 uvicorn과 Gunicorn을 설치한 상태로 가정하겠습니다. FastAPI - 21 (Gunicorn) Gunicorn을 설치 할 때와 비슷한 질문이 떠오르네요. Nginx가 뭔가요? 왜 설치 해야 하나요? FastAPI는 Gunicorn으로 실행하는데 Nginx와 같이 실행 할 수 있나요? Gunicorn때와 동일하게 제가 설치한 내용을 간단히 정리 했습니다. 공식 사이트 https://www.nginx.com/ Nginx 공식 문서 Nginx? Nginx는 강력한 웹 서버이자 리버스 프록시 서버로, 고성능과 효율적인 정적 콘텐츠 제공, 요청의 로드 밸런싱, SSL/TLS 암호화 등을 처리합니다. 왜 Gunicorn와 함께 사용하나요? 비동기적 처리를 하는 uviconr을 설치했고 안정성과 관..
FastAPI - 21 (Gunicorn) Gunicorn이 뭔가요? 왜 설치 해야 하나요? FastAPI는 uvicorn으로 실행하는데 Gunicorn과 같이 실행 할 수 있나요? Gunicorn을 설치 하면서 위와 같은 의문이 많이 들었습니다. 제가 설치한 내용을 간단히 정리 했습니다. 공식 사이트 Gunicorn: https://gunicorn.org/ uvicorn: https://www.uvicorn.org/ Gunicorn? uvicorn? Uvicorn과 Gunicorn은 둘 다 Python 웹 애플리케이션을 위한 서버입니다. 다만 지원하는 인터페이스와 내부 작동 방식에 차이가 있습니다. Gunicorn 인터페이스: Gunicorn은 WSGI(Web Server Gateway Interface) 애플리케이션 서버입니다. WSGI는 P..
Python 서버 이전 - 01 (ubuntu 20.04) 개발 서버를 이전해야 할 경우가 있습니다. '개발 서버를 이전하는 경우가 많이 생기겠어' 라고 생각을 했습니다. 근데 생각외로 많았습니다. 자주 하던 작업이 아니어서 체감상 많이 생겼다고 느끼는 것일 수도 있습니다. 확실 한 건 갑작스럽게 서버를 이전해야 하는 경우에는 매우 당황스럽니다. 너무 당황하지 말자는 뜻에서 간단히 정리해 봤습니다. 환경은 아래로 가정하겠습니다. cloud ubuntu 20.04 python 3.8 git, github visual studio code 대략의 절차 새로운 서버를 생성합니다. 파이썬을 설치합니다. 소스코드를 이전합니다. 개발 tool을 설치 하고 설정합니다. 테스트 합니다. 새로운 서버 생성 서버는 클라우드, 온프레미스 등 다양한 방법이 있습니다. 사전에 이전 계..