본문 바로가기

파이썬/2. 파이썬 심화

(7)
파이썬 map, filter, reduce Map 리스트의 요소에 함수를 적용하여 iterator 객체로 반환 list가 아닌 iterator로 반환하는 이유는 원하는 자료구조로 변환시킬 수 있도록 하기 위함. a = [1, 2, 3] b = list(map(lambda x: x + 10, a)) #[11, 12, 13] https://leejunggae.tistory.com/31 파이썬 람다 함수(lambda) 람다 함수 함수의 표현 방식 중 하나 lambda 인자 : 표현식 의 형태로 사용 표현식 안에서 변수를 만들 수 없음 익명함수 : 이름이 없는 함수를 만듬 -> 변수에 할당해주어야 함 def plus(x): return x + 10 x = p.. leejunggae.tistory.com 자주 같이 쓰이는 람다 함수에 대해서는 이전 포스트..
파이썬 게으른 연산(lazy evaluation) 게으른 연산(lazy evaluation) 연산이 필요할때까지 연산하지 않는 것. iterator, generator 객체에 해당 마지막 데이터 이후부터는 StopIteration exception 발생 메모리 절약으로 리스트보다 안정적, 효율적 iterable + iter() = iterator iterator, generator에 대한 설명은 이전에 다루었으니 링크 참고. https://leejunggae.tistory.com/28
파이썬 클로저(closure) 클로저 어떤 함수를 함수 자신이 갖고 있는 환경과 함꼐 저장한 레코드 자신의 영역 밖 호출된 함수의 변수 값과 레퍼런스 저장, 캡쳐한 값에 액세스 제공 def out(): message = 'Hi' def in(): print message return in func = out() func() # Hi out이란 함수를 실행하면 in 이라는 함수를 return 한다. 그 in을 func에 넣고 실행해보면 Hi가 출력된다. 분명 in은 전달받는 인자도 없고 내용은 print message뿐인데 어떻게 Hi를 출력할까? http://schoolofweb.net/blog/posts/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%ED%81%B4%EB%A1%9C%EC%A0%80-closure/ 답은 clos..
파이썬 람다 함수(lambda) 람다 함수 함수의 표현 방식 중 하나 lambda 인자 : 표현식 의 형태로 사용 표현식 안에서 변수를 만들 수 없음 익명함수 : 이름이 없는 함수를 만듬 -> 변수에 할당해주어야 함 def plus(x): return x + 10 x = plus(5) print(x) # 15 기존 함수를 plus = lambda x: x + 10 x = plus(5) print(x) # 15 이런식으로 표현할 수 있다. # 바깥 변수 사용하기 y = 10 (lambda x: x + y)(1) # 11 # 람다 표현식 인수로 사용하기 list(map(lambda x: x + 10, [1, 2, 3])) # [11, 12, 13] 부가적인 사용방법들. 인수 만들때 편리할 것 같다.
파이썬 데코레이터(Decorator) + *args, **kwargs 데코레이터 함수를 꾸며주는 장식자 기존 코드를 수정하지 않고도 기능을 추가할 수 있다. def decorator(function): def wrapper(): # 받은 함수를 실행 print('{} 함수 호출 요청'.format(function.__name__)) return function() return wrapper @decorator_function # 아래 함수를 function 인자로 넣어준다. def abc(): print('abc 함수 실행 완료.') @decorator_function # 아래 함수를 function 인자로 넣어준다. def xyz(): print('xyz 함수 실행 완료.') abc() print xyz() # abc 함수 호출 요청 # abc 함수 실행 완료. # # ..
파이썬 반복자와 생성자(Iterator, Generator) 반복자(Iterator) 반복가능한 개체(Iterable object) 반복문을 활용해서 데이터를 순회하면서 처리하는 것 next()를 가진 모든 객체 무한한 데이터소스를 나타낼 수 있다. 아래 예시로 확인하자 x = iter([1, 2, 3]) print(next(x)) # 1 print(next(x)) # 2 print(next(x)) # 3 print(next(x)) # stopiteration exception 데이터를 순회시키면서 처리할 수 있다. x = iter([1, 2, 3]) print(x.__next__()) # 1 print(x.__next__()) # 2 print(x.__next__()) # 3 print(x.__next__()) # stopiteration exception 이러..
파이썬 함수 호출방식 프로그래밍 언어에는 두 가지 매개변수 전달 방식이 있다. 값에 의한 호출(Call by value) 변수를 함수로 넘기는게 아니라 변수의 값만 복사하여 함수로 넘김 복사된 인자는 지역변수의 특성을 갖는다.(따라서 외부 변수의 값은 변하지 않는다.) #include void call_by_value(int a, int b) # 두 수를 서로 바꾸는 함수 { int temp = a; a = b; b = temp; } int main(void) { int a = 1; int b = 2; call_by_value(); print("%d %d", a, b); # 1, 2 # 두 수는 변하지 않는다. 참조에 의한 호출(Call by reference) 함수 호출시 변수의 레퍼런스 전달(해당 변수를 가리키는 주소) ..