본문 바로가기

Python/공부공부

(10)
[Python] ast.literal_eval() AST(Abstract Syntax Tree, 추상 구문 트리)프로그래밍 언어에서 소스 코드를 구조적으로 표현한 트리 형태의 자료구조.파이썬은 표준 라이브러리로 ast 모듈을 제공. ast.dump() 함수AST 트리를 문자열로 출력 (디버깅용)ast.parse() 함수코드 문자열을 AST로 변환. import astcode = "x = 3 + 4"tree = ast.parse(code)print(ast.dump(tree, indent=4)) # 트리 구조 출력 (출력결과)Module( body=[ Assign( targets=[Name(id='x', ctx=Store())], value=BinOp( left=Cons..
[Python] top-level 코드 ( import시점 & runtime 시점 ) 파이썬에서 top-level 코드는 해당 모듈의 import 시점에, 단 한 번만 실행된다.* top-level 코드 : 함수/클래스 밖의 모듈. ( if 분기문, for 반복문, print 등 포함 ) (config.py)from datetime import datetimeprint(f"===import 시점 실행===")NOW = datetime.now() # top-level 코드print(f"[config.py] NOW(import): {NOW}")print(f"===import 시점 실행===")def get_current_time(): # top-level 코드 global NOW return NOW(main.py)from config import get_current_tim..
[Python] 패킹(Packing) & 언패킹(Unpacking) * 패킹(Packing) 여러 개의 값을 하나의 튜플로 패킹.data = 1, 2, 3print(data)# 출력결과 : (1, 2, 3)=> 여러개의 값을 data 라는 변수에 패킹. 출력결과는 튜플인 것을 확인할 수 있다.  * 언패킹(Unpacking)하나의 변수에 묶여 있던 값을 여러 변수에 나눠서 할당. (자바스크립트의 구조분해할당과 유사한듯)a, b, c = dataprint(a) # 출력결과: 1print(b) # 출력결과: 2print(c) # 출력결과: 3=> data 튜플에 담겨있던 값들을 각각 a, b, c라는 변수에 언패킹.언패킹 변수의 갯수와 데이터(튜플, 리스트 등) 갯수를 맞춰줘야함!!  파이썬은 여러개의 값을 return하면 자동으로 튜플로 묶어버린다. (패킹)def g..
[Python] Deepdiff, PyYAML 라이브러리 (+ YAML이란?) * Deepdiff Python에서 두 개의 데이터 구조(딕셔너리, 리스트, JSON 등)를 비교하여 변경된 부분만 추출할 수 있도록 도와주는 패키지.설치pip install deepdiff  1) Dictionary 비교from deepdiff import DeepDiffdict1 = {"name": "Alice", "age": 25}dict2 = {"name": "Alice", "age": 30}diff = DeepDiff(dict1, dict2)print(diff)결과{'values_changed': {"root['age']": {'old_value': 25, 'new_value': 30}}}  2) List 비교list1 = [1, 2, 3]list2 = [1, 3, 2]diff = DeepDif..
[Python] 웹 프레임워크 (Django, Flask, FastAPI, Sanic 등..) [ Django ] - 풀스택 웹 프레임워크 - ORM(객체 관계 매핑)을 통해 데이터베이스 작업이 쉽고 직관적 - 복잡한 웹 애플리케이션, 대규모 프로젝트, 빠른 프로토타이핑에 적합. [ Flask ] - 경량 프레임워크 - 간단하고 가벼우며, 필요한 모듈만 추가하는 방식. - 마이크로서비스, 작은 웹 애플리케이션, RESTful API 에 적합. [ FastAPI ] - 매우 빠르고, 비동기(Asyncio) 지원. - 타입 힌트(Type Hint) 를 통해 데이터 검증과 자동 문서화(스웨거 UI) 지원. - 고성능 API 서버, 머신러닝 모델 API, 비동기 애플리케이션에 적합. [ Tornado ] - 비동기 네트워크 라이브러리와 함께 제공되는 웹 프레임워크. - 비동기 I/O를 지원해 많은 동시 ..
[Python] pymysql 라이브러리 (MySQL 데이터 베이스 연동) ( 설치 )pip install pymysql ( DB연결 ) _MySQL connection = pymysql.connect( host='your_host', # 데이터베이스 서버의 호스트 (예: 'localhost' 또는 IP 주소) user='your_username', # MySQL 사용자 이름 password='your_password', # MySQL 사용자 비밀번호 db='your_database', # 연결할 데이터베이스 이름 charset='utf8mb4', # 인코딩 설정 cursorclass=pymysql.cursors.DictCursor # 결과를 딕셔너리 형식으로 반환)  [ cursor ]데이터베이스와..
[Python] zfill() _ 문자열채우기 (날짜/시간 표현) zfill() 메소드 지정한 문자열 길이가 될때까지 문자열 앞을 '0'으로 채워 반환. import datetime# 현재 날짜/시간now = datetime.datetime.now()hour = now.hour# 1minute = now.minute# 7time_format = f"{hour}시간 {str(minute).zfill(2)}분"print(time_format)# 1시간 07분  만일 현재 시간이 1시 7분이라면 str(minute).zfill(2)  => 2자리가 될때까지 앞을 0으로 채워 ' 07 '을 반환.
[Python] dictionary 타입 get 메소드 / KeyError dictionary 타입에서 값을 가져올 때 get메소드를 사용하여 'key'값으로 'value'를 가져온다 (Java의 Map과 비슷.)이 때, 'key' 값이 없다면 KeyError 가 발생. (Java의 Map에서는 null을 반환.)따라서, get 메소드의 두번째 인자에 기본값을 넣어주면, 'key'값이 없는 경우 error가 아닌 이 기본값을 반환.dict = {'a': 1, 'b': 2}# 'a' 키에 대한 값을 안전하게 가져오기value_a = dict.get('a', '기본값') # 결과는 1# 'c' 키는 딕셔너리에 없으므로 기본값을 반환value_c = dict.get('c', '기본값') # 결과는 '기본값'   import requests# 예시 URL에서 요청을 보냅니다.res..