1. Python이란?- 가독성이 좋고 생산성이 높은 언어- 간결한 문법 → 유지보수 용이- 방대한 라이브러리와 프레임워크를 제공 → 데이터 분석, 웹 개발, 머신러닝 등 다양한 분야에서 사용됨- 인터프리터 언어 특성상 속도 면에서는 C나 Java와 같은 컴파일 언어보다 느릴 수 있지만, 프로토타입 제작이나 빠른 개발 주기에 유용하다.* 인터프리터 언어란? 코드를 한 줄씩 해석하며 실행 2. 다른 언어와의 차이점PythonJavaJavascript인터프리터- 한줄씩 해석컴파일- 바이트코드 변환 → JVM실행하이브리드- 본질 인터프리터 + 최근 JIT동적 타이핑- 런타임에 타입 결정정적 타이핑- 타입 명시적 선언, 컴파일 타임에 타입 검사동적 타이핑- 런타임에 타입 결정가독성, 간결함엄격한 문법과 구조- ..
시간 측정 함수를 데코레이터로 사용하였으나, 비동기 함수 실행시 작동하지 않는 문제 발생 1. 데코레이터 작동 순서@time_checkasync def my_func(): ...# 위 코드는 내부적으로 다음과 같이 동작합니다my_func = time_check(my_func) # 데코레이터 적용 시점# 이 시점에서 time_check가 비동기 함수라면 await가 필요하게 되어 문법적으로 불가능 2. 데코레이터 자체를 비동기 함수로 만들면 안될까?* python의 데코레이터 규칙- 데코레이터는 함수 정의 시점(프로그램 시작 전, 코드가 파이썬에 의해 해석되는 시점)에 실행 : await 사용 불가- 비동기 작업은 런타임에 실행되어야 하므로, 내부 래퍼 함수에서 처리해야 한다.- 따라서, 데코레이터..
1. 멤버 변수란?- 클래스 내부에서 정의된 변수- 객체(인스턴스)의 속성을 저장하는 역할 1) 클래스 변수- 클래스명.변수명으로 선언- 모든 객체가 공유하는 변수 2) 인스턴스 변수- self.변수명으로 선언- 각 객체(인스턴스)마다 개별적으로 존재하는 변수- 즉, 객체마다 다른 값을 가질 수 있음class Person: species = "Human" # 클래스 변수 def __init__(self, name, age): self.name = name # 인스턴스 변수 self.age = age # 인스턴스 변수p1 = Person("Alice", 25)p2 = Person("Bob", 30)print(p1.name, p1.age) # Alice 25pri..
Python 함수의 매개변수 개수를 동적으로 받을 때 사용하는 문법 1. *args 위치 인자- 여러 개의 위치 인자(positional arguments)를 받을 때 사용- 튜플 형태로 전달됨- 인자의 개수가 정해져 있지 않아, 여러 개를 받을 수 있다def add_numbers(*args): return sum(args) # args는 튜플로 저장됨print(add_numbers(1, 2, 3, 4)) # 10print(add_numbers(10, 20)) # 30 2. **kwargs 키워드 인자- 여러 개의 키워드 인자를 받을 때 사용- 딕셔너리 형태로 전달됨- 매개변수 이름과 값을 같이 넘길 수 있다- 함수 내부에서 kwargs.items()를 사용해 키-값 쌍을 처리할 수 있다def..
1. GIL이란?- Global Interpreter Lock- Python의 CPython 인터프리터에서 동시에 하나의 스레드만 실행될 수 있도록 제한하는메커니즘- 멀티스레드 환경에서도 한 번에 하나의 스레드만 Python 바이트 코드를 실행할 수 있다.- 따라서 멀티스레딩으로 처리하면 느려질 수 있다. 2. GIL이 왜 필요할까?- Python의 메모리 안전성을 유지하기 위해 존재- Python이 메모리 관리 시스템은 참조 카운트를 기반으로 한다- 여러 개의 스레드가 동시에 실행되면 참조 카운트 값을 수정하는 과정에서 Race Condition이 발생할 수 있는데, 이를 방지하기 위함이다* Race Condition 이란?- 두 개 이상의 스레드가 동시에 같은 자원(메모리, 파일, 변수 등)에 접근..
1. asyncio가 필요한 이유* asyncio란? Pytyhon의 내장 모듈(라이브러리)- python은 위에서 아래로 순차적으로 실행된다(동기)- 네트워크 요청이나 데이터베이스 쿼리 같은 작업은 실행하는데 시간이 걸리기 때문에 대기 시간을 줄이기 위해 사용- I/O 작업이 완료될 때까지 기다리는 동안 다른 작업을 수행할 수 있다-싱글 스레드 환경에서도 병렬적으로 작업을 처리할 수 있다- 멀티스레딩보다 메모리 사용량이 적고, 코드가 간결해진다 2. 이벤트 루프란?- 비동기 작업(코루틴, I/O 작업 등)을 실행하고 관리하는 역할을 하는 핵심 엔진- 비동기함수(async def)를 실행하려면 반드시 이벤트 루프가 필요하다- 이벤트 루프는 비동기 작업을 예약하고 실행하며, 실행이 끝날때까지 관리한다- 한..
1. python 에서 변수 scope- 다른 언어와 달리 python은 별도의 블록 범위를 생성하지 않아, if문 안에서 선언된 변수도 밖에서 사용 가능하다- 리소스는 자동으로 정리하지 않는다* if, for, while과 같은 블록에서 선언된 변수는 해당 블록이 끝나도 여전히 사용할 수 있다.x=3if x>2: y=30print(y) # 30** 대신 함수 범위를 사용하기 때문에 함수 안에서 선언한 변수는 함수 밖에서 사용할 수 없다.def add(x,y): a=x+y return aresult = add(2,3)print(a) # error 2. with- with문은 단순한 블록이 아니라 컨텍스트 매니저(Context Manager)라는 특별한 구조를 가진다- with문이 끝나면 ..
프로그래머스 알고리즘 고득점 KIT - 힙(Heap) 1. 우선순위 큐란?- 우선순위가 가장 높은 데이터를 가장 먼저 삭제하는 자료구조- 데이터를 우선순위에 따라 처리하고 싶을 때 사용(예: 가치가 높은 물건부터 꺼내서 확인해야 하는 경우)- 구현방법: 리스트 혹은 힙(Heap)이용자료구조추출되는 데이터스택(Stack)가장 나중에 삽입된 데이터큐(Queue)가장 먼저 삽입된 데이터우선순위 큐(Priority Queue)가장 우선순위가 높은 데이터 2. 힙이란?- 완전 이진 트리의 한 종류 (루트 → 왼쪽노드 → 오른쪽 노드 순으로 채워지며, 항상 부모 규칙을 따르도록 정렬)- 루트 노드가 제거되면 마지막 요소가 루트 자리로 이동import heapqscoville = [1, 2, 3, 9, 10, 12..
- Total
- Today
- Yesterday
- 운동
- 루틴
- 갓생
- 30분
- 오픽
- 실기
- SQL
- 프로그래머스
- 오블완
- 습관
- 다이어트
- 아침
- 줄넘기
- Ai
- 기초
- C언어
- IH
- 빅데이터 분석기사
- ChatGPT
- 고득점 Kit
- 영어회화
- opic
- 뉴스
- Python
- 스크랩
- 미라클모닝
- 경제
- 아침운동
- llm
- 티스토리챌린지
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |