오늘 배운내용
- Section1) filter, reduce
- Section2) OOP, Class
filter, reduce
filter
filter의 기본 사용 format : filter([function], [iterable object])
1부터 10까지의 수 중에 짝수인 수로 구성된 리스트 만들기
1 | def even_selector(x): |
isinstance(‘[check value]’, [check type])
1 | **isinstance의 사용예)** isinstance('1', int) # True |
reduce
reduce의 기본 사용 format : reduce([function], [iterable object])
- iterable object의 모든 element에 대하여 연산결과를 출력
- reduce는 Python3의 기본 내장함수에서 제외되어, functools에서 별도로 import해서 사용한다.
from functools import reduce
- Rossum은 map, filter, reduce에 대해 readibility가 떨어진다는 이유로 제외 기본 내장함수에서 제외하였다.
reduce 사용하지 않고 단순 반복문으로 1부터 100까지의 합을 구하기
1 | sum = 0 |
reduce를 사용하여 1부터 100까지의 합을 구하기
1 | from functools import reduce |
옆 사람이랑 같이 pair coding하기
아래의 간단한 예제 문제를 옆 사람과 해결방향을 모색해가며 문제해결을 한다.
1 | recycle_bin = [ |
1 | # 위에서 작성한 방식과 다르게 filter해서 나온 결과 리스트를 다시 filter하는 방식으로 처리 |
1 | # 위에서 작성한 방식과 다르게 filter해서 나온 결과 리스트를 다시 filter하는 방식으로 처리 |
OOP(Object-Oriented-Programming) : 객체지향 프로그래밍
- 특징
- Encapsulation
- 구현한 것을 드러나지 않도록 함
- Information hiding: public, _protected, __private
- Abstraction
- 인터페이스로 클래스의 공통 특성을 묶어 표현
- Inheritance
- 자식 클래스가 부모 클래스의 특성과 기능을 물어본다.
- Polymorphism
- 변수, method가 다른 상태를 가지는 것
- Encapsulation
- 프로그래밍 언어의 변천
- Imperative Programming(명령적 프로그래밍)
- Procedural programming(절차지향 프로그래밍)
- Object-Oriented Progrmming(객체지향 프로그래밍)
- Functional Programming(함수형 프로그래밍)
Scope
- local : outer_scope(함수내의 변수)의 binding을 바꾸지 못한다.
- nonlocal : outer_scope(함수내의 변수)의 binding을 바꾼다.
- global : 전역 binding을 바꾼다.
아래의 간단한 예제를 통해 global, local, nonlocal
의 키워드에 대해서 이해한다.
1 | ## Scope |
Class
- SOLID
- Single Responsibility Principle
- 한 클래스는 하나의 책임만 가져야 한다.(goto 19)
- Open/Closed Principle
- 확장에는 열려있지만, 변경에는 닫혀 있어야 한다.(override)
- Liskov’s Substitution Principle
- 프로그램의 정확성을 깨트리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.(is-A)
- Interface Segregation Principle
- 사용하지 않는 method는 분리해야 한다.(Abstract)
- Dependency Inversion Principle
- 추상화에 의존하고, 구체화에 의존하지 않는다.
- Single Responsibility Principle
- 구성요소
- Class
- Object
- Method
1 | # class의 기본형태 |
Class 작성 및 인스턴스 생성
1 | class Hero: |
Class 작성 및 인스턴스 생성(+인스턴스 변수 초기화) 및 Class 내부 method 작성
1 | class Hero: |
인스턴스 객체 참조를 통한 class 내부 변수의 값 변경하기
1 | class LetsSeeAttributes: |