전체 글 332

파이썬 프로젝트 패키지 관리와 의존성 관리, Poetry란?

📝 Poetry란?Poetry는 파이썬 프로젝트의 패키지 관리와 의존성 관리, 그리고 패키지 배포까지 통합적으로 지원하는 도구입니다.기존의 pip, virtualenv, setuptools, requirements.txt 등 여러 도구를 한데 통합한 올인원 솔루션이라 생각하시면 됩니다.📦 주요 기능기능 설명의존성 관리pyproject.toml 파일을 통해 직관적으로 의존성 추가 및 잠금(lock) 가능가상환경 자동 관리프로젝트마다 자동으로 가상환경 생성 및 관리패키징 간편화간단한 명령어로 패키지 생성 및 배포 준비 가능일관성 있는 환경 구성poetry.lock 파일로 팀 간 환경 차이 최소화버전 관리 지원패키지의 버전 명세를 ^, ~ 등으로 유연하게 조절 가능🛠️ Poetry 설치curl -sSL ..

16. 함수 고급 활용과 모듈의 기초

📘 Day 16. 함수 고급 활용과 모듈의 기초1. 함수 인수 고급 정리✅ Keyword 가변 인수 (**kwargs)함수 정의 시 **kwargs를 사용하면 개수에 상관없이 키워드 인수를 받을 수 있음전달된 값은 딕셔너리 형태로 저장됨def print_info(**kwargs): for key, value in kwargs.items(): print(f"{key} : {value}")print_info(name="지훈", age=18, score=95)✅ 함수 호출 시 unpacking자료형 기호 설명tuple*인수 여러 개로 분리dict**키워드 인수로 분리def introduce(name, age): print(f"{name}은 {age}살입니다.")info = ("지수",..

15. 함수 인자 활용과 모듈 개념 이해

📘 Day 15. 함수 인자 활용과 모듈 개념 이해1. 함수 설계 시 고려 순서무슨 기능을 수행할지 결정호출 시 전달받을 인수(parameter) 결정결과를 return할지 여부 결정2. 함수의 인수(Argument & Parameter)용어 설명Parameter함수 정의 시 사용된 변수Argument함수 호출 시 전달하는 값3. 인수 전달 방식전달 방식 특징Call by Value값을 복사하여 전달 (불변 자료형: int, float, str, tuple)Call by Reference참조(메모리 주소)를 전달 (가변 자료형: list, dict, set)Call by Object파이썬에서 사용되는 방식. 전달된 객체의 특성에 따라 동작예시def modify_list(my_list): my_li..

14. 함수(Function)의 정의, 구조, 그리고 호출 방식

📘 Day 14. 함수(Function)의 정의, 구조, 그리고 호출 방식1. 함수란?단위 기능을 수행하는 코드 블럭복잡한 문제를 기능 단위로 분해하여 작성중복 코드를 줄이고, 재사용성과 유지보수성을 높여줌2. 함수 사용의 목적목적 설명중복 제거동일한 기능 반복 구현 방지유지 보수코드 이해도와 수정 용이성 향상논리 분할복잡한 프로그램을 기능별로 나눔재사용성외부 모듈/라이브러리로도 활용 가능3. 함수의 종류분류 설명내장 함수파이썬에 기본 포함된 함수 (print(), len() 등)3rd party 함수외부 패키지 설치 후 사용 (예: numpy.mean())사용자 정의 함수직접 정의한 함수4. 함수 정의 형식def 함수이름([인수]): # 기능을 수행하는 코드 [return 반환값]예시 1:..

13. 집합(Set)과 함수(Function)의 기초

📘 Day 13. 집합(Set)과 함수(Function)의 기초1. 집합(Set)✔️ 특징중복 없이 데이터를 저장순서 없음 → 인덱싱, 슬라이싱 불가가변형 자료형 (값 추가/삭제 가능)집합 연산(합집합, 교집합 등)에 특화된 자료형✅ 생성 방법s = {1, 2, 3} # 중괄호 사용s = set([1, 2, 3]) # list → set 형변환empty = set() # 빈 set은 반드시 set() 사용{} 만 쓰면 빈 딕셔너리가 생성되므로 주의📌 주요 메서드메서드 설명add(x)요소 추가update(iterable)여러 요소 한꺼번에 추가remove(x)요소 삭제 (없으면 오류 발생)discard(x)요소 삭제 (없으면 무시)p..

웹 기반 사용자 인터페이스(UI), Swagger

웹 기반 사용자 인터페이스(UI), SwaggerFastAPI에서 제공하는 Swagger는 API 문서를 자동으로 생성해 주는 웹 기반 사용자 인터페이스(UI)입니다.API를 설명하고, 직접 테스트까지 할 수 있는 편리한 도구입니다.✅ Swagger란?웹 API의 기능을 시각적으로 보여주는 도구API 요청 방법과 응답 구조를 자동으로 문서화직접 버튼 클릭으로 요청을 보내고 결과를 확인할 수 있음FastAPI는 Swagger를 내장하여 별도 설정 없이 /docs 주소에서 바로 제공📌 Swagger의 주요 기능기능 설명API 목록 보기모든 경로(GET, POST 등)를 한눈에 확인 가능입력 필드 자동 생성필요한 데이터 형식을 자동으로 표시버튼 클릭 테스트코드 작성 없이 API 실행 가능응답 확인응답 데이터..

FastAPI 기초 교육 자료 (입문 실습용)

🏷️ FastAPI 기초 교육 자료 (입문 실습용)📌 학습 목표FastAPI 웹 서버를 실행할 수 있다.URL 경로를 만들고 응답 메시지를 작성할 수 있다.JSON 형식의 데이터를 주고받을 수 있다.Swagger UI를 통해 API를 테스트할 수 있다.1. FastAPI란?Python으로 만든 빠르고 쉬운 웹 프레임워크웹 브라우저나 앱과 데이터를 주고받는 API 서버 구축에 최적화문서 자동 생성 (Swagger, Redoc)2. 프로젝트 기본 구조📁 예제 디렉터리 구조my_project/├── main.py ← 여기에 서버 코드 작성3. 예제 코드 작성하기main.py 파일에 아래와 같이 작성합니다.from fastapi import FastAPIfrom pydantic import ..

FastAPI 접속 오류 해결

FastAPI 접속 오류 해결브라우저에서 해당 앱에 접속하려고 하자 "사이트에 연결할 수 없음" (ERR_CONNECTION_REFUSED) 오류가 발생하고 있습니다.✅ 현재 상황 요약FastAPI 앱은 uvicorn을 통해 다음 주소에서 실행됨:http://127.0.0.1:8000그러나 Windows 호스트에서 가상머신 서버(192.168.142.200:8000) 로 접속하려 하여 연결 거부됨.즉, 서버는 127.0.0.1 (자기 자신) 만 허용 중이고, 외부(호스트 PC)에서는 접근할 수 없음.✅ 해결 방법✔ 1. Uvicorn 실행 시 호스트를 0.0.0.0으로 지정현재는 127.0.0.1에서만 접속을 허용하고 있어서 외부에서 접근이 안 됩니다. 다음 명령어로 실행해 주세요:uvicorn main..

conda로 가상환경 새로 만들기

✅ conda로 가상환경 새로 만들기1. 가상환경 생성conda create -n fastapi-env python=3.11fastapi-env는 가상환경 이름입니다. 원하는 이름으로 바꾸셔도 됩니다.python=3.11은 사용할 Python 버전입니다. 필요에 따라 3.10, 3.9 등도 가능합니다.2. 가상환경 활성화conda activate fastapi-env활성화되면 프롬프트 앞에 (fastapi-env)처럼 가상환경 이름이 보입니다.3. 필요한 패키지 설치pip install fastapi uvicornFastAPI와 서버 구동용 Uvicorn을 함께 설치합니다.✅ FastAPI 실행 예시작업 디렉터리로 이동한 뒤, FastAPI 프로젝트를 실행하세요:uvicorn main:app --relo..

12. 딕셔너리 메서드와 실전 활용

📘 Day 12. 딕셔너리 메서드와 실전 활용1. 딕셔너리 주요 메서드메서드 설명 예시get(key, default)key로 값 검색. 없으면 기본값 반환d.get("score", 0)keys()key 목록 반환d.keys()values()value 목록 반환d.values()items()(key, value) 쌍 목록 반환d.items()update(other_dict)다른 딕셔너리와 병합d.update(d2)pop(key)key로 항목 삭제 후 value 반환v = d.pop("name")clear()전체 항목 삭제d.clear()copy()얕은 복사d2 = d.copy()❗ get()은 안전하게 값을 검색할 때 유용하며, 존재하지 않는 key를 조회해도 오류가 발생하지 않음.🔁 깊은 복사 (de..