[Python] 제너레이터 표현식 (Generator Expression)
·
Programming/Python
제너레이터(Generator)는 값을 한 번에 만들지 않고, 필요할 때마다 하나씩 만들어 내는 객체이다. 기본 구조(표현식 for 변수 in iterable if 조건)소괄호 ( )를 사용한다.결과물은 리스트나 세트가 아니라 제너레이터(Generator) 객체이다. 주요 특징Lazy Evaluation 제너레이터는 Lazy Evaluation을 한다. 즉, 값을 미리 만들어 놓지 않고, 누군가 "다음 값 줘!"라고 요청할 때 비로소 계산을 시작한다. 모든 값을 저장할 필요가 없는 경우, 제너레이터는 메모리 측면에서 매우 유리하다.gen = (x**2 for x in range(3))print(next(gen)) # 0print(next(gen)) # 1print(next(gen)) # 4# print(..
[Python] 세트 컴프리헨션 (Set Comprehension)
·
Programming/Python
세트 컴프리헨션(Set Comprehension)은 중복을 허용하지 않는 집합(set)을 만드는 가장 간결한 방법이다. 리스트 컴프리헨션과 거의 같지만, 결과가 set이라는 점이 핵심이다. 기본 구조{표현식 for 변수 in 반복가능객체 if 조건} 딕셔너리 컴프리헨션과 헷갈리기 쉬운데,{expr} → set{key: value} → dict{}를 사용하지만 key: value가 아닌 단일 표현식만 적는다. 결과물은 순서가 없고 중복이 없는 set 객체다. 일반적인 방식unique_numbers = set()for x in [1, 2, 2, 3, 3, 3]: unique_numbers.add(x)# 결과: {1, 2, 3} 세트 컴프리헨션unique_numbers = {x for x in [1, 2..
[Python] 딕셔너리 컴프리헨션 (Dictionary Comprehension)
·
Programming/Python
딕셔너리 컴프리헨션(Dictionary Comprehension)은 기존 데이터로부터 새로운 dict를 만드는 표현식이다.리스트 컴프리헨션과 거의 동일하지만, 결과가 dict라는 점이 핵심이다.기본 구조{key_expr: value_expr for 변수 in iterable if 조건}key_expr → key 생성value_expr → value 생성 일반적인 방식squares = {}for x in range(5): squares[x] = x * x 딕셔너리 컴프리헨션squares = {x: x * x for x in range(5)} “dict를 만든다”는 의도가 바로 보인다. 실제로 많이 쓰는 패턴들기존 dict 가공raw = {"A": 10, "B": -3, "C": 7}filtered ..
[Python] 리스트 컴프리헨션 (List Comprehension)
·
Programming/Python
리스트 컴프리헨션(List Comprehension)은 파이썬에서 새로운 리스트를 만들 때 사용하는 짧고 간결한 문법이다.보통 for 루프와 if 조건을 결합하여 한 줄로 작성하며, 리스트를 생성하는 목적에 한해서 일반적인 for + append() 방식보다 코드가 간결하고, 대부분의 경우 실행 속도도 더 빠르다.기본 구조[표현식 for 변수 in 반복가능객체 if 조건] 이 문법의 목적은 딱 하나다. “반복 + 조건 + 변환”을 한 줄로 표현하여, 리스트를 만든다는 의도를 명확히 드러내는 것이다. 일반적인 방식numbers = []for i in range(5): numbers.append(i)# 결과: [0, 1, 2, 3, 4] 리스트 컴프리헨션numbers = [i for i in range..
라이브러리(Library) vs 프레임워크(Framework)
·
Programming/Common
라이브러리(Library)와 프레임워크(Framework)는 둘 다 코드를 재사용하기 위한 도구이지만, 제어의 흐름(Control Flow)을 누가 가지고 있느냐에 따라 본질적으로 다르다. 라이브러리(Library) 개발자가 주도권을 가진다.필요한 기능이 있을 때 개발자가 직접 호출해서 사용한다.즉, 내 코드가 라이브러리를 사용한다. import mathresult = math.sqrt(16) # 개발자가 직접 sqrt() 호출print(result) math는 라이브러리이며, 개발자가 언제, 어디서, 어떻게 쓸지 직접 제어한다. 프레임워크(Framework) 프레임워크가 주도권을 가진다.개발자는 프레임워크의 규칙에 따라 코드를 작성하고, 프로그램의 실행 흐름은 프레임워크가 결정한다.즉, 프레임워크..
API란 무엇인가?
·
Programming/Common
IT업계에서 자주 사용되는 API(Application Programming Interface)의 의미에 대해 나 나름대로 정리하려한다. API의 정의API란 Application Programming Interface의 약자이다. 한 문장으로 정의하면, 프로그램 사이의 통신을 위한 약속이다. ‘Interface’라는 단어에 집중하면 단순히 연결창구 정도로만 생각하기 쉬운데, API의 진짜 핵심은 ‘약속’이라는 개념에 있다. 약속에 대해 자판기로 비유를 한번 들어보자. 자판기에서 “콜라 버튼”을 누르면 콜라가 나온다.사용자는 자판기 내부가 어떻게 작동하는지 몰라도, 버튼을 누르는 방법(인터페이스)만 알면 된다. API도 마찬가지로, 내부 동작은 몰라도 정해진 방법대로 요청만 하면 결과를 얻을 수 있다. ..