전체 글 1330

고급 Agent를 위한 Langgraph 개념 이해 #4 - Tool 호출

4. Tool 호출Graph에서 외부 Tool을 호출하는 방법에 대해서 알아보도록 하자. 먼저 Tool 함수를 정의해야 하는데,Tool을 일반적인 파이썬 함수로 정의한다. 이때 중요한 부분은 함수 첫줄에 툴에 대한 설명을 주석으로 달아줘야 한다. LLM AI 모델이 어떤 툴을 사용해야할지 판단할때 이 정보를 이용해서, 툴의 기능을 파악한 후에, 툴 호출 여부를 결정한다. 아래는 get_weather라는 툴을 정의한 코드로, 특정 지역의 날씨를 리턴하는 테스트 코드이다. (지역명이 sf나 san francisco인 경우에는 온도를 60도로, 아니면 90도 온도로 리턴한다.) 이렇게 툴을 호출하는 노드를 ToonNode라고 하는데, 인자로, 호출할 툴 함수를 정의한다. 아래 코드에서 보면 ToolNode([..

고급 Agent를 위한 Langgraph 개념 이해 #3 - Edge

3. EdgeEdge는 노드가 정의된 후에, 노드에서 호출한 다음 노드를 정의한다. 사용 방법은 매우 간단하다.아래와 같이 노드를 먼저 정의한 후에, add_edge를 이용하여 연결하고자 하는 노드 이름을 지정하면 된다. 아래 코드의 경우 node_1→node_2를 호출하는 구조를 정의하였다. builder.add_node("node_1", node_1)builder.add_node("node_2", node_2)graph.add_edge("node_1", "node_2")Conditional routing일반적인 Edge flow이외에, 조건에 따라서 특정 노드로 Routing 하도록 플로우를 정의할 수 있다. 예를 들어서 아래 그림과 같이, node_1실행후에, 조건에 따라서 node_2또는 node..

고급 Agent를 위한 Langgraph - Multi State 사용시 주의해야할점

Langgraph에서는 하나의 Graph에서 여러개의 State를 동시에 사용할 수 있다. 또한 정의된 State는 전역변수 처럼 인식되서, 다른 Node로 그 값을 넘기지 않아도 그 값이 그대로 유지되고 사용이 가능하다.예를 들어node1(State1)->State2node2(State2)->State3node3(State1)->State3로 호출하는 구조가 있다고 하자.이 경우, node1의 output인 State2는 node2의 Input에 들어가지만, node2의 output이 State3인데, node3에서 State3를 받지 않고, State1을 받을 수 있을까? 답변은 된다.State1,2,3의 정보가 같이 유지되고 있기 때문에, 이전 노드의 State가 아니더라도 사용이 가능하다. 아래 ..

고급 Agent를 위한 Langgraph 개념 이해 #2 - Node

2. NodeNode는 State 정보를 활용해서, State 정보를 변경하거나 action을 취하는 그래프내의 함수이다. 함수내에서는 LLM 모델을 실행해서 질문에 대한 정답을 찾거나 , Tool 등을 이용해서 Action을 취하거나, 또는 RAG를 통해서 질문에 필요한 추가 컨택스트 정보를 검색해와서 State에 저장해서 다음 Node에서 LLM이 답변에 활용할 수 있도록 한다. 예를 들어 web_search,chat 이라는 Node가 있을때, web_search Node에서는 Google 검색을 이용하여, 질문에 필요한 추가 정보를 검색해서 State에 저장한후, 다음 chat 노드에서 해당 State에 저장된 Context 정보를 리턴하는 식으로 구현이 된다. Node는 Python funct..

고급 Agent를 위한 Langgraph 개념 이해 #1-State

먼저 Langgraph의 개념을 이해하려면 3가지 State, Node, Edge에 대해서 알아야 한다. 각 컴포넌트의 개념과 세부 문법에 대한 이해가 없으면 어떻게 Langgraph가 작동하는지에 대해서 이해가 매우 어렵기 때문에, 이 글에서는 개념과 문법에 대해서 설명하도록 한다. 그래프는 Node로 구성이 되어 있는데, State를 받아서, 작업을 하고, State를 출력하는 역할을 한다. Node를 실행한 후에, 다른 Node를 실행하기 위해서는 Edge를 따라서, Node를 이동하게 된다. 이 개념을 그림으로 표현하면 아래와 같다. 사각형이 Node이고, Node들을 연결하는 선이 Edge, 그리고, Node들이 입력으로 받고, 업데이트 하는 것이 State (상태 정보)이다. 1. State..

Python TypedDict

TypedDict는 파이썬의 타입 힌트를 위한 기능으로, 딕셔너리의 키와 값에 대한 타입을 명시적으로 지정할 때 사용한다. 일반 dict와 달리, 정해진 키와 그에 해당하는 값의 타입을 강제하여 코드의 안정성과 가독성을 높여준다.TypedDict란 무엇인가?TypedDict는 typing 모듈에서 제공하는 클래스로, 딕셔너리의 구조를 미리 정의할 수 있게 해준다. 딕셔너리에 어떤 키가 존재해야 하는지, 그리고 각 키에 해당하는 값의 타입이 무엇인지 명시할 수 있다.이는 정적 타입 검사 도구(static type checker)가 코드 실행 전에 잠재적인 오류를 발견하도록 돕는다. 예를 들어, 존재하지 않는 키에 접근하거나 잘못된 타입의 값을 할당하려고 할 때 미리 경고를 받을 수 있다.예제TypedDic..

Google ADK와 LangGraph 비교 (Node,Edge 기반 워크플로우 정의기능)

LangGraph가 노드와 엣지 구성을 통해서 워크플로우를 정교하게 관리할 수 있는데, 그러면 Google ADK도 가능할까 해서, 예제 코드를 Gemini를 이용해서 구성해봤다. 일단 결론 부터 이야기하자면, Google ADK는 노드와 엣지의 개념은 없지만, 노드대신 에이전트로 정의한후, 이를 워크플로우로 연결이 가능하고, Loop와 Branch역시 가능하다. 아직 Node와 ADK의 Agent차이에 대해서는 좀 더 고민해봐야겠지만, 개념상으로 비슷한것은 만들수있다는 이야기.from google.adk.agents import LlmAgent, SequentialAgent, BaseAgentfrom google.adk.events import Event, EventActionsfrom google...

Langgraph tool 호출 튜토리얼

이 문서는 Langgraph의 공식 튜토리얼 두번째 "Add tools"에 대한 코드를 설명한 문서이다.원본 코드 : https://langchain-ai.github.io/langgraph/tutorials/get-started/2-add-tools/모델 생성 및 툴 생성 부분tool = TavilySearch(max_results=2)tools = [tool]llm = init_chat_model("google_genai:gemini-2.5-flash")llm_with_tools = llm.bind_tools(tools)외부 Search tool로 Langchain tool (TavilySearch)툴을 생성하고, 해당 툴을 tools 리스트에 넣은후에,LLM 모델을 생성하고, 해당 tool을 LLM..

LLM 모델 알고리즘 이해를 기반으로, 효율적인 프롬프트 작성하기

LLM의 확률적 생성 프로세스 제어를 위한 방법론: 프롬프트 엔지니어링의 기술적 원리대규모 언어 모델(LLM)과의 상호작용 시, 응답의 비결정성(Non-determinism)과 재현성(Reproducibility)의 부재는 개발자에게 주요한 도전 과제이다. 프롬프트 엔지니어링은 이러한 확률적 모델의 출력을 결정론적으로 제어하기 위한 핵심적인 방법론으로 부상했다. 본 문서는 프롬프트 엔지니어링의 주요 기법들이 LLM의 내부 아키텍처 및 수학적 원리에 기반하여 어떻게 작동하는지 심층적으로 분석한다.1. LLM의 근본 원리: 자기회귀적 확률 모델 (Autoregressive Probabilistic Model)LLM의 모든 출력은 자기회귀(Autoregressive) 모델의 기본 원칙을 따른다. 즉, 주어진 ..

Gemini CLI 활용 방법과 숨겨진 가치

조대협 (http://bcho.tistory.com) 본인은 구글 클라우드의 엔지니어이며, 이 글은 회사의 의견을 대표하지 않고 본인 개인의 의견임을 밝혀둡니다. 얼마전에 Gemini CLI가 발표되고, Google Gemini 서버가 폭주했다는 이야기까지 들려왔다. 사람들은 왜 Gemini CLI에 열광할까? 이미 ChatGPT나 Claude가 웹, 데스크탑 까지 지원하고 있고, Cursor나 Winsurf같은 코딩 AI에서 부터 Lovable, V0와 같은 바이브 코딩 툴이 있는데, 터미널에서 지원하는 CLI 기반의 AI가 나온것 하나가 이 시장에 어떤 영향을 미칠까? 무료 서비스라는 발표로 많은 인기를 얻었지만, 그 보다 Gemini CLI는 SDLC (Software Development Lif..

잘알려지지 않은 Gemini의 유용한 기능 #2 - 구글 검색 연동과, 코드 실행

조대협 (http://bcho.tistory.com) 지난 글에 이어서, Gemini에서 잘 알려지지 않은 기능을 연결해서 소개한다.오늘 소개하는 기능은 구글 검색 연동과, Gemini가 코드를 생성하고, 이를 실행할 수 있는 Code Execution이라는 기능 두가지이다. Google Search GroundingGemini API중에서 아마 가장 유용한 기능중 하나가 아닌가 싶은데, Google AI 모델 답게, Google Search 엔진과 연동이 된다. 내장된 구글 검색 도구를 가지고 있으며, 이를 사용하면, 질문에 대한 답을 얻기 위해서 구글 검색을 통해서 자료를 검색한 후에, 이를 기반으로 Gemini가 답변을 해준다. from google import genaifrom google.gen..

잘알려지지 않은 Gemini의 유용한 기능-#1 Thinking & Context URL

조대협 (http://bcho.tistory.com) 보통 우리가 LLM을 생각하면 LLM 모델은 학습된 정보를 기반으로 질문에 답변을 하는 기능만 생각하지만 LLM을 서비스하는 API의 경우 추가적인 기능을 제공하는 경우가 많다. Gemini API의 경우 구글 검색을 통한 답변이나, 코드를 생성한 후 자동으로 실행해주는 Code execution과 같은 추가 기능을 제공한다. 이는 Gemini LLM 모델에 추가적으로 Google Search나 코드 실행과 같은 추가 기능을 개발하여, API를 통해서 서비스 하는 개념이다. Gemini API에는 생각보다 유용한 기능들이 많은데, 이 글에서는 Gemini API의 유용한 기능을 위주로 살펴보도록 한다. Thinking먼저 Thinking 모델 (..

AI 개발 시대에서, 개발자로 살아남기 위해서..

요즘 바이브 코딩, 커서 AI등, AI 기술이 개발쪽으로 깊숙하게 들어오고 있다. 실제로 아래 차트를 보면, LLM 공급자인 앤트로픽에서 LLM 모델이 어디서 많이 사용되는지를 조사한 통계자료가 있는데, 37.2%가 컴퓨터 관련(개발 관련)이다. 그외에 10.3%가 Art & Media쪽인데, 광고/마케팅이나 컨텐츠 생성쪽이다. 실제 시장을 봐도 AI 기술에 대한 이야기는 많지만 업무에 실질적으로 적용하고 있는 빈도는 생각보다 크게 높지 않고, AI를 잘 이해하고 있는 IT 쪽의 적응률이 높은 것을 볼 수 있다. 이러한 AI의 활용은 소프트웨어 개발의 생산성 향상으로 이루어지게 되고, 실제로 아래 파이낸스 타임즈지에 나온 그래프를 보면, 2024년을 기점으로 소프트웨어 엔지니어에 대한 채용이 급격하게 ..

바이브 코딩 다음은 AIOps

코딩 자동화에 이어 운영 자동화까지 AIOps조대협 (http://bcho.tistory.com) 요즘 바이브 코딩이 많이 주목받고 있는데, 오늘은 바이브 코딩과 AIOps에 대해서 이야기 해보고자 한다. 먼저 바이브 코딩과 AI IDE에 대해서 분류해서 생각해볼 필요가 있다. 코딩 플랫폼바이브 코딩바이브 코딩은 대화를 하면서 코딩을 한다는 개념으로 생각하면 되는데, 주로 완제품 웹사이트나 모바일앱을 만들어주는 영역이 여기에 해당한다. 주로 UI가 있는 애플리케이션을 개발해주는 개념인데, Vercel의 V0, Replit, Lovable등이 이에 해당한다. 이러한 플랫폼은 코딩에 대한 지식이 없거나 부족한 경우에도 애플리케이션을 개발할 수 있는 장점이 있다. 특히 Vercel백앤드나 Superbase등의..

체계적인 바이브 코딩 5단계 + 필수 도구!!

바이브 코딩 5단계 + 필수툴입니다보통 바이브 코딩 강의 보면 프롬프트 몇개 넣고 마는데, 진짜 바이브 코딩은 기획서 부터 AI로 생성하는 것 부터 시작하고, AI가 가능한 부분과 사람이 해야 하는 부분을 구분해야 하는데. 진짜 바이브 코딩 방법을 30분내에 설명해드립니다. 초보자뿐만 아니라, 실무자에게도 유리한 바이브코딩 5단계 + 필수툴입니다.

Nest.JS DTO,DAO and Pojo

Nest.js에서 사용하는 DTO의 개념이 Spring DAO와 헷갈렸는데. DTO는 단순히 Value Object라고 보면 된다. Data Transfer Object로 데이터를 저장하는 복합체 구조이다. DAO는 Data Access Object로, ValueObject의 내용을 DB에 저장하는 로직을 가지고 있다. 참고 : 아래는 Java 코드 예제임. 즉 DTO는 데이터에 대해서 아래와 같이 get/set 만을 가지고 있고, public class UserDto { private int id; // @NotEmpty // Example validation: name cannot be empty // @Size(min = 2, max = 50) // Example validat..

Nest.JS Controller, Module, Service 의 관계

Nest.JS에서 처음으로 소개되는 개념인 Controller, Service, Module의 개념에 대해서 알아보자. ControllerHTTP Request를 직접 받는 컴포넌트이다. 어떤 URI로 받을지 @Get,@Post,@Put,@Delete 등의 데코레이터로 어떤 HTTP Request를 받을지 결정한다. 아래는 /users REST API를 정의한 간단한 예제인데/users URI는 @Controller('users') 데코레이터에서 정의한다. @Get(':id')로 /users/{id}에 대한 요청 처리 로직을 정의하였다. import { Controller, Get, Post, Body, Param, Put, Delete } from '@nestjs/common';@Controller(..

바이브 코딩 - 개발자들이 없어진다고 하는데, 바이브 코딩 오해와 진실

요즘 인터넷에 보면 가장 많이 나오는 단어가 바이브 코딩(Vibe coding)이 아닌가 싶다. Cursor와 같은 AI 코딩 도구를 이용해서, 코딩을 모르는 사람도 자연어로 요구 사항을 설명하면 AI가 자동으로 코드를 생성해준다. 유투브 채널에 보면 온갖 바이브 코딩에 대한 이야기이고, 개발자는 이제 없어질 것이며 신입은 필요가 없다는 이야기도 나오는데, 잘못된 오해가 많은 것 같고, 제대로 바이브 코딩을 하는 방법에 대한 가이드가 상대적으로 적은 것 같아서, 바이브 코딩에 대한 오해와, 어떻게 하면 바이브 코딩을 제대로 할 수 있을지에 대해서 설명하고자 한다. 바이브 코딩의 정의바이브 코딩은 OpenAI의 공동 창립자인 Andrej Karpathy에 의해서 2025년 2월에 소개되었다. 바이브 코딩은..

MCP (Model Context Protocol) 2. 서버 개발하기

조대협 (http://bcho.tistory.com)지난 글을 통해서 MCP의 개념에 대해서 간략하게 이해해봤다. 이번글에서는 그러면 어떻게 MCP 서버를 실제로 구현하는지에 대해서 알아보도록 한다. MCP Local server & remote serverMCP server 는 구동 위치에 따라서, 로컬 서버와 리모트 서버로 분리된다. 아래는 Anthropic 의 아키텍처 다이어그램이다.   로컬 서버의 경우, MCP 애플리케이션 호스트 프로세스가 기동되는 로컬 데스크탑에서 실행되는 서버이고, 리모트 서버는 클라우드나 기타 네트워크로 접속될 수 있는 환경에서 기동되는 서버이다. 로컬 서버의 경우에는 같은 데스크탑에서 실행되기 때문에, 로컬 자원, 즉 데스크탑의 파일 등에 접근할 수 있다.(노트 : 이는..

MCP (Model Context Protocol) 1. 개념 이해

조대협 (http://bcho.tistory.com) 근래에 들어서 LLM 에 관련해서 가장 핫한 토픽중에 하나는 MCP (Model Context Protocol)이다. MCP는 Anthropic에서 발표한 프로토콜로 LLM 모델이 외부 애플리케이션과 연동할 수 있도록 해주는 스펙으로, 예를 들어 클로드 모델이 학습된 결과로 답변만할 수 있는데 비해서 MCP를 이용하여 외부 애플리케이션과 연동하게 되면, 구글 검색 결과를 통해서 최신 정보를 가지고 답변을 하거나, Spotify를 이용해서 음악을 플레이하도록 할 수 있다.  이번 글에서는 MCP에 대한 개념에 대해서 이해해보도록 한다. (아래는 본 글의 내용을 이해하기 쉽게 설명한 비디오 이다. ) Agent 개념의 이해MCP를 이해하려면 먼저 LLM과..

앤트로픽을 모델 사용 통계를 통한 LLM 사용 현황

조대협 (http://bcho.tistory.com 앤트로픽에서 운영중인 모델의 데이터를 분석해서, 앤트로픽 모델이 주로 누가 어디에 사용하는지를 정리한 논문이 있어서 정리해본다. https://arxiv.org/abs/2503.04761v1?fbclid=IwY2xjawJWyMVleHRuA2FlbQIxMAABHVWipyblGC0KyHFa9XOFI58D9_YyB-2OTRySYTyE2sQ1xAiR4QwW5wXIEg_aem_FxQeOTGerX42xiHBiCRZIQ Which Economic Tasks are Performed with AI? Evidence from Millions of Claude ConversationsDespite widespread speculation about artificial i..

2025년 Devops 트랜드 세미나 공지

2025년 Devops 트랜드에 대한 무료 세미나를 알려드립니다. https://docs.google.com/.../1FAIpQLScNuq7qBqEPVF.../viewform미국에서는 이제 Devops는 너무 필수적인 것이라 많이 이야기 하지 않습니다. 그보다 비용 효율화를 위한 Finops, 보안을 위한 Secops와 개발과/운영을 밀접하게 연계해서 비즈니스 임팩트를 주기 위한 부분을 많이 고민합니다.2025년 Devops트랜드에 대해서 구글의 정명훈님과 전 화해 CTO님 이재광님이 준비했습니다.

바이브 코딩 메뉴얼 - AI 에이전트를 활용한 더 빠르고 스마트한 개발

조대협 (http://bcho.tistory.com)소프트웨어를 작성하는 방식이 변화하고 있다. "바이브 코딩(Vibe Coding)"은 더 직관적이고 AI 주도적인 개발 프로세스를 일컫는 용어로 주목받고 있다. 온라인 커뮤니티에서 만들어지고 Cursor나 Windsurf 같은 도구를 통해 대중화된 이 방식은, 모든 코드를 직접 입력하기보다 지능형 에이전트를 통해 자신의 비전, 즉 "바이브(vibe)"에 기반하여 애플리케이션을 구축하도록 안내하는 것에 가깝다."에이전트 기반 코딩(Agentic Coding)"이라고도 알려진 이 방식은 단순히 멋진 자동 완성과는 다르다. 이는 Claude 3.7 Sonnet('Thinking' 버전이 특히)이나 Grok과 같은 AI 모델과 협력하여 초기 구조 설정부터 기능..

LLM 모델의 JDBC 드라이버 LiteLLM

조대협 (http://bcho.tistory.com) 최근 여러 LLM이 소개 되고 있는데, LLM 마다 가격이나 특성이 틀리기 때문에 여러 모델을 함께 사용하는 경우가 있는데, 이때 마다 SDK가 달라서 어려움이 있을 수 있다. (물론 Langchain을 써도 된다.) 또한 금액이나 요청 종류에 따라서 특정 LLM으로 라우팅을 하거나 또는 특정 LLM 모델이 응답을 하지 못할때 Fallback등의 기능을 구현해야 하는데, LiteLLM은 이런 기능을 제공하는 파이썬 라이브러리이다. 이글에서는 LiteLLM과, 대표적인 라우팅 기능에 대해서 알아보도록 한다. 1. LiteLLM이란 무엇이고 왜 필요한가?LiteLLM은 다양한 LLM 제공자(Provider)들의 API를 표준화된 단일 인터페이스로 호출할 ..

2025 DevOps의 본질과 최신 트렌드

정명훈 (구글 클라우드)IT에서의 효율성IT에서 효율성을 얻을 수 있는 최고의 방법은 무엇일까? 반복과 재사용이다. 아날로그 현실 세계와 달리 디지털 기반의 IT 세계에서는 동일한 결과물을 만드는 것이 매우 쉽다. 친구나 동료가 말한 목소리를 기억하고 전달하는 아날로그 방식은 내용을 빼먹기도 하지만, 디지털로 남겨지는 스마트폰 녹음은 10년이 지나도 그대로 전달할 수 있다. 한 번 녹음된 디지털 음성은 10개를 복제하던 100개를 복제하던 품질이 그대로 유지된다.  IT 발전의 역사는 반복과 재사용을 통한 효율화의 역사이다. 어떻게 하면 하드웨어 또는 소프트웨어를 모듈 단위로 만들어 재사용할 수 있게 고민한다. 함수를 통해서, 컴포넌트를 통해서 그리고 API를 통해서 소프트웨어를 재사용한다. 인텔과 AM..

파이썬 - 비동기 컨텍스트 매니저 async with .. as ..

async with 와 as 자세한 설명 및 예제 (Python Async)async with 와 as는 파이썬의 비동기 프로그래밍 (asyncio)에서 비동기 컨텍스트 관리자를 사용할 때 핵심적인 역할을 합니다. 일반적인 with 구문과 비슷하지만, 비동기 작업에 특화되어 리소스 관리를 더욱 강력하고 효율적으로 만들어줍니다.1. 컨텍스트 관리자 (Context Manager) 복습: with 구문과 as 절 (동기)먼저, 일반적인 (동기) 컨텍스트 관리자를 이해하는 것이 중요합니다. with 구문은 특정 리소스 (파일, 연결 등)를 안전하게 사용하고, 사용 후 자동으로 정리 (close, release 등)하도록 보장하는 메커니즘입니다.# 일반적인 with 구문 (동기 파일 I/O)with open("..

파이썬 - Function annotation ("->")

Python Function Annotations (100줄 이내 설명)Python Function Annotations는 함수 매개변수와 반환 값에 대한 타입 힌트 및 메타데이터를 제공하는 기능입니다. Python 3.5+ 부터 사용 가능하며, def 키워드 함수 정의 시 콜론 : 뒤에 표현식을 사용하여 어노테이션을 추가합니다.핵심은 리턴 타입을 강제하는 것이 아니라, 개발자나 IDE 와 같은 도구에게 가독성을 높이기 위한 방법이다.  문법:def function_name(param1: type_hint, param2: type_hint = default_value) -> return_type_hint: # 함수 내용 return valueparam1: type_hint: 매개변수 param..

파이썬 - Coroutine과 await

Python 코루틴 (Coroutine) 상세 설명코루틴은 프로그래밍의 패러다임 중 하나로, 서브루틴(함수)을 일반화한 개념입니다. 단순히 순차적으로 실행되는 함수와 달리, 코루틴은 실행을 일시 중단(pause)했다가 나중에 다시 재개(resume)할 수 있는 능력을 핵심으로 가집니다. 이러한 특징 덕분에 코루틴은 비동기 프로그래밍과 동시성 프로그래밍에서 매우 강력한 도구로 활용됩니다.1. 코루틴이란 무엇인가? (서브루틴과의 비교)서브루틴 (Subroutine, 일반 함수):단방향 진입/탈출 (Single entry point/exit point): 함수는 시작점에서 진입하여, 종료점에서 탈출합니다.호출자-피호출자 관계 (Caller-Callee): 함수를 호출하는 쪽(caller)과 호출되는 쪽(cal..

파이썬 - Generator & Iterator

제너레이터(Generator)와 이터레이터(Iterator) 비교: 장단점제너레이터와 이터레이터는 모두 파이썬에서 값을 순차적으로 생성하는 데 사용되는 객체입니다. 하지만 구현 방식과 사용 사례에서 차이가 있습니다.이터레이터 (Iterator)정의:이터레이터는 __iter__() 와 __next__() 라는 두 개의 특별한 메서드(매직 메서드 또는 던더 메서드)를 구현하여 값을 순차적으로 꺼낼 수 있도록 하는 객체입니다.__iter__() 메서드는 이터레이터 객체 자신을 반환합니다.__next__() 메서드는 다음 값을 반환하거나, 더 이상 반환할 값이 없을 때 StopIteration 예외를 발생시킵니다.구현 예:class MyIterator: def __init__(self, data): ..

파이썬 - yield 키워드

yield 키워드 설명yield 키워드는 Python에서 제너레이터(Generator) 함수를 정의할 때 사용되는 특별한 키워드입니다. 제너레이터는 이터레이터(Iterator)의 한 종류로, 값을 한 번에 모두 메모리에 저장하는 대신, 필요할 때마다 하나씩 생성하여 반환합니다.1. 제너레이터 (Generator)이터레이터(Iterator): __iter__() 와 __next__() 메서드를 구현하여 값을 순차적으로 꺼낼 수 있는 객체입니다. 리스트, 튜플, 문자열 등이 이터레이터의 예입니다.제너레이터(Generator): yield 키워드를 사용하여 이터레이터를 간단하게 생성하는 방법입니다. 함수 내에서 yield를 만나면, 해당 값을 반환하고 함수의 실행을 일시 중지합니다. 다음에 다시 호출되면, 중..