인공지능을 위한 파이썬 5-2 [完]
1~5주차 강의 복습 및 예제 풀어보기
이터레이터와 반복 가능한 객체 , 제너레이터와 yield
반복 가능한 객체(Iterable)
반복 가능한 객체는 하나씩 차례대로 값을 꺼내올 수 있는 객체를 말한다.
리스트, 튜플, 문자열 ,딕셔너리 등은 모두 반복 가능한 객체.
이들은 for 루프에서 반복 할수 있고 , 내부적으로는 __iter__() 메서드를 통해 이터레이터를 반환한다.
이 예시에서 numbers 는 반복가능한 객체이며 , for 루프를 통해 각요소를 하나씩 꺼내 출력할수있다.
이터레이터
이터레이터는 반복 가능한 객체의 요소를 하니씩 꺼내오는 객체.
__init__ , __next__() 메서드를 구현해야하며,__next__() 메서드를 호출 할때마다 다음 요소를 반환함.
더이상 꺼낼 요소가 없다면 Stopineration 예외를 발생시킴.
iter() 함수는 numbers 리스트로 부터 이터레이터를 생성한다. next() 함수를 사용해 이터레이터의 각 요소를 꺼내올수있다.
이 예시에서 MyIterator 클래스는 이터레이터를 구현하며 , for 루프에서 사용할수 있다.
제너레이터
제너레이터는 이터레이터를 생셩하는 특별 함수로 yield 키워드를 사용해 값을 하나씩 반환함.
한꺼번에 메모리에 올리지 않고 필요할때 마다 값을 생성하기에 효율성이 높다.
특징으로는 ,yield가 호출될 때마다 함수의 상태가 유지되며, 다음 호출시 그 상태로부터 실행이 재개됌.
제너레이터는 호출 시 객체를 반환하며 , 그 객체는 이터레이터 처럼 동작함.
simple_generator 함수는 yield을 통해 값을 하나씩 반환하는 제너레이터이다.
next() 함수를 사용해 값을 하나씩 꺼내올수 있다.
*yield는 제너레이터 함수에서 값을 반환하고 , 함수의 실행 상태를 유지한다.
이후 다음 호출에서 이어서 실행이 된다.
이 예시에서는 피보나치 수열을 생성하는 제너레이터를 정의하고 , for 루프를 사용해 10개의 피보나치 수를 출력한다.
데코레이터와 with구문
데코레이터
데코레이터는 함수나 메서드를 변경하지 않고, 추가적인 기능을 쉽게 추가할 수 있는 방법.
함수를 다른 함수로 감싸서 , 원래 함수에 새로운 기능을 덧 붙일때 사용함.
데코레이터를 적용하는 방법은 데코레이터를 적용하려는 함수 위에 '@데코레이터' 이름을 붙여 사용한다.
이 예시에서 display 함수는 @decorator_function 데코레이터로 감싸져서 , 함수 실행 전후에 추가기능이 실행된다.
데코레이터 예시
이 예시에서는 say_hello 함수는 호출 될 때 마다 실행 전후로 로그를 출력 하게 된다.
여러 데코레이터를 하나의 함수에 적용 할수 있으며 , 이경우 데코레이터는 안쪽에서부터 밖으로 차례대로 적용된다.
@decorator1 <-추가로 적용
@decorator2 <- 먼저 적용
def my_function():
pass
with 구문 (컨텍스트 매니저)
컨텍스트 매니저는 리소스를 획득하고 사용한 뒤 , 자동으로 정리해주는 메커니즘.
with 구문의 기본 구조는 다음과 같다.
이 예시에서 with 구문은 파열을 열고 , 블록이 끝나면 자동으로 파일을 닫는다.
Django 학습을 위한 프레임워크와 라이브러리 개념잡기
라이브러리란?
라이브러리는 특정 기능을 수행하는 모듈이나 함수들의 집합.
여기서 math는 라이브러리로, 제곱근을 계산하는 sqrt 함수만 필요할때 호출하여 사용한다.
프레임워크란 ?
애플리케이션 개발의 기본 구조와 흐름을 제공하는 틀.

Django란?
파이선 기반의 고수준 웹 프레임워크.
Django의 주요 구성 요소
- 모델 -데이터베이스 구조를 정의, 데이터와 상호작용하는 역할
- 뷰 - 사용자가 보는 화면을 담당
- 템플릿 - HTML을 생성하는 역할
- URL 컨피그 - URL과 뷰를 연결하는 역할
Django의 기본적인 동작 흐름
- URL 요청
- 뷰 호출
- 데이터처리및 템플릿 렌더링
- HTML 응답
MVT 개념잡기 : Django의 핵심 구조 이해하기
MVT패턴이란?
Django에서 사용하느 아키텍처 패턴으로, 웹 애플리케이션의 기본 구조를 정의한다.
MVT의 구성 요소로는 모델, 뷰 , 템플릿이 있다.
MVT 의 각 구성요소 자세히 살펴보기
모델
모델은 데이터베이스 구조와 데이터 처리 로직을 정의하는 부분.
모델을 사용하여 데이터를 저장,조회,수정,삭제하는 작업을 수행할수있다.
이 예시에서 Article 클래스는 Django 모델로 , 데이터베이스의 article 테이블을 나타낸다.
title , content , created_at 필드는 각각 테이블의 컴럼에 해당된다.
뷰
뷰는 비지니스 로직과 데이터 처리를 담당하며, 사용자 요청에 따라 보여줄 데이터를 결정한다.
뷰는 사용자 요청에 대한 응답으로 HTML,JSON , XML 등 다양한 형식의 데이터를 반환할수 있다.
이 예시에서 article_list 뷰는 모든 기사를 조회하여 , article_list.html 템플릿에 전달한다.
render 함수는 템플릿과 데이터를 결합하여 최종 HTML 응답을 생성한다.
템플릿
템플릿은 사용자에게 보여질 화면을 정의하는 부분으로 주로 HTML파일로 구성된다.
Django의 템플릿 언어를 사용하면 , 조건문, 반복문 , 변수 출력등을 통해 복잡한 HTML을 간단히 작성할수 있다.
이 예시에서 템플릿은 article_list 뷰에서 전달된 articles 데이터를 사용해 각 기사의 제목과 작성 시간을 출력한다.

오늘의 회고
명일이 휴일이고 목표해둔 오늘의 강의의 분량이 적어서
2일동안 앞서 공부했던 내용들을 복습할 좋은시간이 생긴것 같다.
당일 학습한 내용은 이해하기 많이 어려운 부분인거 같아서
라이브러리 강의를 들으며 어느정도 이해하고 다시 넘어와 학습하면 좋을거 같다.
'나의개발일지(TIL)' 카테고리의 다른 글
| [스파르타 내일배움캠프]6일차 -파이썬 라이브러리 (0) | 2024.10.10 |
|---|---|
| [스파르타 내일배움캠프]5일차 -파이썬 라이브러리 (2) | 2024.10.07 |
| [스파르타 내일배움캠프]4일차 -파이썬 라이브러리 (0) | 2024.10.04 |
| [스파르타 내일배움캠프]2일차 -인공지능을 위한 파이썬 (1) | 2024.10.01 |
| [스파르타 내일배움캠프]1일차 -인공지능을 위한 파이썬 (2) | 2024.09.30 |