코딩하는 해맑은 거북이

인공지능(AI) 기초 다지기 (4) 본문

AI

인공지능(AI) 기초 다지기 (4)

#CJE 2022. 12. 17.
본 게시물의 내용은 '인공지능(AI) 기초 다지기(부스트코스)' 강의를 듣고 작성하였다.
해당 글은 2-1. 파이썬 기초 문법 Ⅲ 2가지 파트를 다룬다.
1. Python Object Oriented Programming
2. Module and Project

 

 

1. Python Object Oriented Programming

- 객체 지향 프로그래밍, Object-Oriented Programming, OOP

객체 : 실생활에서 일종의 물건, 속성(Attribute)행동(Action)을 가짐

           프로그램으론 속성은 변수(Variance), 행동은 함수(Method)로 표현됨

 

OOP는 설계도에 해당하는 클래스(Class)와 실제 구현체인 인스턴스(Instance)로 나눔

cf) 클래스는 붕어빵틀, 인스턴스는 다양한 붕어빵들

 

 

- Objects in Python

1) Class 선언하기

object는 python3에서 자동 상속

* Naming Rule

  - snake_case : 띄어쓰기 부분에 "_"를 추가, 뱀 처럼 늘여쓰기

    ex) 파이썬 함수/변수명에 사용

  - CamelCase : 띄어쓰기 부분에 대문자, 낙타의 등 모양

    ex) 파이썬 Class명에 사용

 

2) Attribute 추가하기

__init__, self 와 함께 attribute를 추가한다. __init__은 객체 초기화 예약 함수

* __는 특수한 예약 함수나 변수 그리고 함수명 변경(맨글링)으로 사용

  참고자료:https://corikachu.github.io/articles/python/python-magic-method

 

3) Method 구현하기

method(action) 추가는 기존 함수와 같으나, 반드시 self를 추가해야만 class 함수로 인정됨

 

4) Objects(instance) 사용하기

Object 이름 선언과 함께 초기값 입력하기

 

 

- OOP Characteristics

1) Inheritance, 상속

부모 클래스로 부터 속성과 Method를 물려받은 자식 클래스를 생성하는것

cf) 자식 클래스에서 super()는 부모 클래스를 부른다는 뜻.

 

2) Polymorphism, 다형성

같은 이름 메소드의 내부 로직을 다르게 작성

Dynamic Typing 특성으로 인해 파이썬에서는 같은 부모 클래스의 상속에서 주로 발생함

 

3) Visibility, 가시성

객체의 정보를 볼 수 있는 레벨을 조절하는 것

누구나 객체 안에 모든 변수를 볼 필요가 없음

- Attribute 추가할때 변수명 앞에 __를 붙이면 Private 변수로 선언되어 타객체가 접근할 수 없음

- private 변수를 불러오는 방법 : property decorator로 숨겨진 변수를 반환하는 함수 선언

 

* Encapsulation, 캡슐화, 정보은닉(Information Hiding)

: Class를 설계할 때, 클래스 간 간섭/정보공유의 최소화

 

 

- First-class objects, 일등함수, 일등객체

: 변수나 데이터 구조에 할당이 가능한 객체

파라메터로 전달 가능 + 리턴 값으로 사용

파이썬의 함수는 일급함수임!

 

 

- inner function

함수 내에 또 다른 함수가 존재

* closures : inner function을 return 값으로 반환

 

 

- decorator function

복잡한 closures 함수를 간단하게!

데코레이터 함수는 다른 함수의 인수로 취해진 다음 래퍼 함수 내에서 호출된다.

 


2. Module and Project

- Module

프로그램에서는 작은 프로그램 조각들, 모듈들을 모아서 하나의 큰 프로그램을 개발함

프로그램을 모듈화 시키면 다른 프로그램이 사용하기 쉬움

ex) Built-in Module인 Random을 사용하여 난수를 쉽게 생성할 수 있음

 

* Module 만들기

파이썬의 Module == py 파일을 의미

같은 폴더에 Module에 해당하는 .py 파일과 사용하는 .py 파일을 저장한 후, import문을 사용해서 module을 호출한다.

 

* namespace

모듈을 호출할 때 범위를 정하는 방법. 즉, 필요한 내용만 골라서 호출할 수 있음

from과 import 키워드를 사용함

1) Alias 설정하기 - 모듈명을 별칭으로 쓰는 방법

2) 모듈에서 특정 함수 또는 클래스만 호출하기

3) 모듈에서 모든 함수 또는 클래스 호출하기

 

 

- Package

모듈을 모아놓은 단위, 하나의 프로그램

하나의 대형 프로젝트를 만드는 코드의 묶음

다양한 모듈들의 합, 폴더로 연결됨

__init__, __main__ 등 키워드 파일명이 사용됨

다양한 오픈 소스들이 모두 패키지로 관리됨

 

* Package 만들기

1) 기능들을 세부적으로 나눠 폴더로 만듦

2) 각 폴더별로 필요한 모듈을 구현함

3) 폴더별로 __init__.py 구성하기

   - 현재 폴더가 패키지임을 알리는 초기화 스크립트

   - 없을 경우 패키지로 간주하지 않음 (버전 3.3+ 부터는 아님)

   - 하위 폴더와 py 파일(모듈)을 모두 포함함

   - import와 __all__ keyword 사용

4) __main__.py 파일 만들기

5) 실행하기 - 패키지 이름만으로 호출하기

 

 

- 가상환경(Virtual Environment) 설정하기 

프로젝트 진행 시 필요한 패키지만 설치하는 환경

기본 인터프리터 + 프로젝트 종류별 패키지 설치

다양한 패키지 관리 도구를 사용함 (대표적인 도구 ex. virtualenv, conda)

 

'AI' 카테고리의 다른 글

인공지능(AI) 기초 다지기 (6)  (0) 2022.12.19
인공지능(AI) 기초 다지기 (5)  (0) 2022.12.18
인공지능(AI) 기초 다지기 (3)  (0) 2022.12.13
인공지능(AI) 기초 다지기 (2)  (0) 2022.12.12
인공지능(AI) 기초 다지기 (1)  (0) 2022.12.12
Comments