functools은 고차 함수를 위한 모듈이다. 다른 함수에 작용하거나 다른 함수를 반환하는 callable 객체에 대해 작용한다. 지금은 본인이 아직 학습 중이기에 대표적인 것만 몇 개 꺼내서 써보도록 하자. 아주 간단한 예시만 할 것이다. import functools as ft functools.reduce(함수,iter[, 초기값]) ...
Python - functools
Python - Coroutine
코루틴은 제네레이터에서 진화한 구조로 2006년(Python 2.5)에서 구현되었다. 이후로도 다양한 메소드가 추가되며 Python 3.3에서는 yield from도 추가되는 등 지금도 계속 발전하고 있다. 미리 설명해두지만 코루틴을 공부하기 전에 일급 함수, 클로저, 제네레이터, 데코레이터를 반드시 선행 공부해야 한다. 무거운 역사 얘기는 집어치...
Python - filter
여기서는 제네레이터 함수 filter에 대해 설명할 것이다. Test = [25, 78, 910, 3060, 6750] def divide(num): if num % 25 == 0: return True else: return False newList = [] for i in Test: if divide(i): ...
Python - Map
여기서는 제네레이터 함수 중 map에 대해 설명한다. Test = [1, 2, 3] # this List is iterable def sq(num): return num * num for i in Test: print(sq(i)) sq는 인자값의 제곱을 반환한다. 즉, 우리는 1, 2, 3의 제곱을 반환하는 함수를 만든 것이다. ...
Python - 데코레이터(Decorator)
데코레이터의 장점은 중복을 제거하고 코드를 간결하게 하며 공통된 함수(로깅, 프레임워크, 유효성 체크)를 작성할 수 있게 한다. 단점이라면 가독성이 악화되고 디버깅이 어려워지기는 하지만 같은 함수를 반복적으로 불러와야 할 때 매우 효율적인 방법이다. 이하는 인프런의 파이썬 중급 오리지널에 나오는 코드를 살짝 수정한 것이다. 우리를 위한 프로그래밍 ...
Python - 클로저(Closure)
전역 변수는 말 그대로 전체 영역(Global Area)에 저장되어 있는 변수다. 지역 변수는 함수 내(Local Area)에 저장되어 있는 변수다. def func(a): print(a) print(b) b = 10 func(10) 다짜고짜 코드부터 보자. 어떤 결과가 일어날까? a에는 func() 에서 10이 대...
Python - 일급 함수(First Function/First Class)
일급 함수 재귀 함수 일급 함수 함수임에도 변수와 동일하게 취급되는 함수를 말한다. 일급 함수의 특징은 재귀함수(Recursion Function)를 만든 뒤 빈 클래스와의 교집합을 빼보면 알 수 있다. def minus(num): num -= 1 if num == 0: return print("Zero!") print...
Python - 모듈(Module)
파이썬 내장 모듈에는 여러가지가 있다. datetime이라든지 random이라든지… 우리는 일단 테스트용으로 datetime을 써보자. import datetime 여기서 우리가 datetime. 을 쓰고 콤마 옆에 커서를 대보면 datetime이 제공하는 정말 많은 메소드(Method)가 표시된다. 그런데 만약 나는 datetime의 dat...
Python - 클래스(Class)
객체지향에서 클래스란 가장 핵심적인 요소다. 하지만 여러 강의사이트에서 듣는다 한들 클래스란 쉽사리 이해되지 않는 존재다. 우습게도 C 계열 언어에서의 class 언어가 더 쉬워보이는 경우까지 생긴다. 실제로 본인은 C# 에서의 클래스는 쉽게 이해했지만 Python 에서의 클래스는 잘 이해하지 못했다. 클래스의 정의란 우리가 목표로 하는 과정 속에서...
Python - 함수(Function)와 람다식(Lambda)
함수란 우리가 원하는 명령을 만들어 그것을 저장하고, 원하는 때에 꺼내서 쓰는 모종의 것을 의미한다. 이미 우리는 수많은 내장함수들을 알고 있다. len, range, map, filter 등… 함수를 만들 적에는 대개 이런 식으로 만들 것이다. def addition(a, b): return print(f"둘을 더한 값은 {a + b}입니다."...