Pythonic Code
왜 배우나?
•
남 코드에 대한 이해도
◦
많은 개발자들이 파이썬 스타일로 코딩한다
•
효율
◦
단순 for loop append보다 list가 조금 더 빠르다
◦
익숙해지면 코드도 짧아진다
•
쓰면 왠지 코드 잘 짜는 것 처럼 보인다
Split & Join
Split 함수
•
string type의 값을 “기준값"으로 나눠서 List 형태로 변환
List Comprehension
•
기존 List 사용하여 간단히 다른 List를 만드는 기법
•
포괄적인 List, 포함되는 리스트라는 의미로 사용됨
•
파이썬에서 가장 많이 사용되는 기법 중 하나
•
일반적으로 for + append 보다 속도가 빠르다
enumerate & zip
•
enumerate : list의 element 를 추출할 때 번호를 붙여서 추출
•
zip : 두 개의 list의 값을 병렬적으로 추출함
Lambda & Map & Reduce
Lambda
•
함수 이름 없이, 함수처럼 쓸 수 있는 익명함수
•
수학의 람다 대수에서 유래함
Map
•
두 개 이상의 list에도 적용 가능함
•
if filter 도 사용가능
•
python3 는 iteration을 생성 → list을 붙여줘야 list 사용가능
•
실행시점의 값을 생성, 메모리 효율적
Reduce
•
map function 과 달리 list에 똑같은 함수를 적용해서 통합
•
딥러닝에서 많이 사용
Iterable objects
•
Sequence형 자료형에서 데이터를 순서대로 추출하는 object
•
내부적 구현으로 __ iter __ 와 __ next __ 가 사용된다
•
iter() 와 next() 함수로 iterable 객체를 iterator object로 사용
generator
•
iterable object를 특수한 형태로 사용해주는 함수
•
element가 사용되는 시점에 값을 메모리에 반환
: yield를 사용해 한번에 하나의 element 만 반환한다
•
list comprehension 과 유사한 형태로 generator 형태의 list 생성
•
generator expression 이라는 이름으로도 부른다
•
[ ] 대신 () 를 사용하여 표현
왜 사용?
•
일반적인 iterator는 generator에 반해 훨씬 큰 메모리 용량 사용
언제 사용?
•
list 타입의 데이터를 반환해주는 함수는 generator로 만들어라!
◦
읽기 쉬운 장점, 중간 과정에서 loop 이 중단될 수 있을 때!
•
큰 데이터를 처리할 때는 Generator expression을 고려하라
◦
데이터가 커도 처리의 어려움이 없음
•
파일 데이터를 처리할 때도 generator 를 쓰자
function passing arguments
•
함수에 입력되는 arguments 의 다양한 형태
1.
Keyword arguments
•
함수에 입력되는 parameter의 변수명을 사용, arguments 를 넘김
2.
Default arguments
•
parameter의 기본값을 사용, 입력하지 않을 경우 기본값 출력
3.
Variable-length asterisk
•
가변인자 using asterisk
•
가변인자
◦
개수가 정해지지 않은 변수를 함수의 parameter로 사용하는 법
◦
Keyword arguments 와 함께, argument 추가가 가능
◦
Asterisk(*) 기호를 사용하여 함수의 parameter 를 표시함
◦
입력된 값은 tuple type 으로 사용할 수 있음
◦
가변인자는 오직 한 개만 맨 마지막 parameter 위치에 사용가능
◦
가변인자는 일반적으로 *args 를 변수명으로 사용
◦
기존 parameter 이후에 나오는 값을 tuple로 저장함
Keyword variable-length (키워드 가변인자)
•
Parameter 이름을 따로 지정하지 않고 입력하는 방법
•
asterisk(*) 두개를 사용하여 함수의 parameter 를 표시함
•
입력된 값은 dict type으로 사용할 수 있음
•
가변인자는 오직 한개만 기존 가변인자 다음에 사용
•
머신러닝에서 많이 사용
asterisk
•
흔히 알고 있는 * 를 의미한다
•
단순곱셈, 제곱연산, 가변인자 활용 등 다양하게 사용된다
asterisk - unpacking a container
•
tuple, dict 등 자료형에 들어가 있는 값을 unpacking
•
함수의 입력값, zip 등에 유용하게 사용가능