파이썬 스타일 코드 2

1. 람다함수

함수의 이름 없이, 함수처럼 사용할 수 있는 익명의 함수

- 앞에는 매개변수의 이름, 뒤에는 매개변수가 반환하는 결과값 작성

- 람다는 직관적이지 않기 때문에 추천되는 방법은 아니다. 코드를 알아볼 수 있는 정도만 공부한다.

# 일반적인 함수
def f(x, y):
    return x + y
f(1, 4)

# 람다 함수
f = lambda x,y : x+y
print(f(1,4))

2. 맵리듀스

1) map() 함수 : 연속데이터를 저장하는 시퀀스 자료형에서 요소마다 같은 기능을 적용할 때 사용

 - list를 붙여야 리스트로 반환 (generator 개념 강화)

 - 람다, map 함수보다 리스트 컴프리헨션이 권장되고 있음

# 람다함수와 맵함수 이용
ex = [1,3,5,7,9] 
a = lambda x : x**3 
list(map(a,ex))
[1, 27, 125, 343, 729]

# 리스트 컴프리헨션 이용
ex = [1,3,5,7,9] 
[x**3 for x in ex]
[1, 27, 125, 343, 729]

2) reduce() 함수 : 리스트 같은 시컨스 자료형에 차례대로 함수를 적용하여 모든 값을 통합하는 함수

# reduce 함수
from functools import reduce
reduce(lambda x,y : x+y, [1,2,3,4,5])
15

# 같은 결과
x=0
for y in [1,2,3,4,5]:
    x+=y
print(x)
15

3. 별표의 활용(asterisk)

  1. 곱하기, 제곱 연산
  2. 가변 인수 : 함수의 매개변수 개수를 정하지 않고 진행할 때 -> 변수의 순서대로 튜플로 저장
  3. 키워드 가변 인수 : 매개변수의 이름도 따로 지정하지 않고 입력할 때 -> 딕셔너리 자료형 저장
  4.  언패킹 : 한 변수에 여러 개의 데이터가 들어 있을 때 그것을 각각의 변수로 반환
#가변 인수
def asterisk_test(a,*args):
    print(a,args)
    print(type(args))
asterisk_test(1,2,3,4,5,6)
1 (2, 3, 4, 5, 6)
<class 'tuple'>

#키워드 가변 인수
def asterisk_test(a,**kargs):
    print(a,kargs)
    print(a,type(kargs))
asterisk_test(1,b=2,c=3,d=4)
1 {'b': 2, 'c': 3, 'd': 4}
1 <class 'dict'>
# 별표의 언패킹 기능
# 변수 앞에 별표를 붙이면 여러 개의 변수를 한 번에 넣을 수 있는 컨테이너 역할을 함
# 가변 인수로 언패킹
def asterisk_test(a, args):
    print(a, *args)
    print(type(args))
asterisk_test(1, (2,3,4,5,6))
1 2 3 4 5 6 
<class 'tuple'>

# 키원드 가변 인수로 언패킹
def asterisk_test(a,b,c,d):
    print(a,b,c,d)
data = {"b":1,"c":2,"d":3}
asterisk_test(10,**data)
10 1 2 3